Changeset 12638
- Timestamp:
- Aug 21, 2009, 11:45:21 AM (15 years ago)
- Location:
- trunk/source/lisp-kernel
- Files:
-
- 2 edited
-
ppc-constants.s (modified) (3 diffs)
-
ppc-spentry.s (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/ppc-constants.s
r12128 r12638 190 190 _node(image_name) /* --image-name argument */ 191 191 _node(BADfpscr_save_high) /* high word of FP reg used to save FPSCR */ 192 _node( BADfpscr_save) /* saved FPSCR*/192 _node(unwind_resume) /* _Unwind_Resume */ 193 193 _node(batch_flag) /* -b */ 194 194 _node(host_platform) /* for runtime platform-specific stuff */ … … 201 201 _node(double_float_one) /* high half of 1.0d0 */ 202 202 _node(short_float_zero) /* low half of 1.0d0 */ 203 _node( doh_head) /* creole objects header*/203 _node(objc2_end_catch) /* objc_end_catch() */ 204 204 _node(metering_info) /* address of lisp_metering global */ 205 205 _node(in_gc) /* non-zero when GC active */ … … 209 209 _node(BAD_cs_overflow_limit) /* limit for control-stack overflow check */ 210 210 _node(kernel_name) /* real executable name */ 211 _node( BAD_current_vs) /* current value-stack area*/211 _node(objc2_begin_catch) /* objc_begin_catch */ 212 212 _node(statically_linked) /* non-zero if -static */ 213 213 _node(heap_end) /* end of lisp heap */ -
trunk/source/lisp-kernel/ppc-spentry.s
r12294 r12638 1577 1577 __(mtxer rzero) 1578 1578 __(mtctr rzero) 1579 __(blr) 1580 1579 __ifdef([PPC64]) 1580 __ifdef([DARWIN]) 1581 __(li imm3,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION) 1582 __(ld imm4,tcr.flags(rcontext)) 1583 __(and. imm3,imm3,imm4) 1584 __(bne cr0,0f) 1585 __endif 1586 __endif 1587 __(blr) 1588 __ifdef([PPC64]) 1589 __ifdef([DARWIN]) 1590 0: /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */ 1591 /* was set in tcr.flags. Clear that bit. */ 1592 __(andc imm4,imm4,imm3) 1593 __(std imm4,tcr.flags(rcontext)) 1594 /* Unboxed foreign exception (likely an NSException) in %imm0. */ 1595 /* Box it, then signal a lisp error. */ 1596 __(Misc_Alloc_Fixed(arg_z,imm1,macptr.size)) 1597 __(std imm0,macptr.address(arg_z)) 1598 __(li arg_y,XFOREIGNEXCEPTION) 1599 __(set_nargs(2)) 1600 __(b _SPksignalerr) 1601 /* Handle exceptions, for ObjC 2.0 */ 1602 LocalLabelPrefix[]ffcallLandingPad: 1603 __(mr save1,r3) 1604 __(cmpdi r4,1) 1605 __(beq 1f) 1606 LocalLabelPrefix[]ffcallUnwindResume: 1607 __(ref_global(r12,unwind_resume)) 1608 __(mtctr r12) 1609 __(bctrl) 1610 LocalLabelPrefix[]ffcallUnwindResume_end: 1611 1: __(mr r3,save1) 1612 LocalLabelPrefix[]ffcallBeginCatch: 1613 __(ref_global(r12,objc2_begin_catch)) 1614 __(mtctr r12) 1615 __(bctrl) 1616 LocalLabelPrefix[]ffcallBeginCatch_end: 1617 __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */ 1618 LocalLabelPrefix[]ffcallEndCatch: 1619 __(ref_global(r12,objc2_end_catch)) 1620 __(mtctr r12) 1621 __(bctrl) 1622 LocalLabelPrefix[]ffcallEndCatch_end: 1623 __(ref_global(r12,get_tcr)) 1624 __(mtctr r12) 1625 __(li imm0,1) 1626 __(bctrl) 1627 __(ld imm2,tcr.flags(imm0)) 1628 __(ori imm2,imm2,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION) 1629 __(std imm2,tcr.flags(imm0)) 1630 __(mr imm0,save1) 1631 __(b LocalLabelPrefix[]ffcall_call_end) 1632 LocalLabelPrefix[]ffcall_end: 1633 __endif 1634 __endif 1581 1635 1582 1636 /* Just like poweropen_ffcall, only we save all argument(result)
Note:
See TracChangeset
for help on using the changeset viewer.
