Changeset 12649
- Timestamp:
- Aug 23, 2009, 5:16:46 AM (15 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/ppc-spentry.s (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/ppc-spentry.s
r12638 r12649 1 /* Copyright (C) 1994-2001 Digitool, Inc */1 /* Copyright (C) 1994-2001 Digitool, Inc */ 2 2 /* This file is part of OpenMCL. */ 3 3 … … 1631 1631 __(b LocalLabelPrefix[]ffcall_call_end) 1632 1632 LocalLabelPrefix[]ffcall_end: 1633 1634 .section __DATA,__gcc_except_tab 1635 GCC_except_table0: 1636 .align 3 1637 LLSDA1: 1638 .byte 0xff /* @LPStart format (omit) */ 1639 .byte 0x0 /* @TType format (absolute) */ 1640 .byte 0x4d /* uleb128 0x4d; @TType base offset */ 1641 .byte 0x3 /* call-site format (udata4) */ 1642 .byte 0x41 /* uleb128 0x41; Call-site table length */ 1643 1644 .long Lffcall_setup-Lffcall /* region 0 start */ 1645 .long Lffcall_setup_end-Lffcall_setup /* length */ 1646 .long 0x0 /* landing pad */ 1647 .byte 0x0 /* uleb128 0x0; action */ 1648 1649 .long Lffcall_call-Lffcall /* region 1 start */ 1650 .long Lffcall_call_end-Lffcall_call /* length */ 1651 .long LffcallLandingPad-Lffcall /* landing pad */ 1652 .byte 0x1 /* uleb128 0x1; action */ 1653 1654 .long LffcallUnwindResume-Lffcall /* region 2 start */ 1655 .long LffcallUnwindResume_end-LffcallUnwindResume /* length */ 1656 .long 0x0 /* landing pad */ 1657 .byte 0x0 /* uleb128 0x0; action */ 1658 1659 .long LffcallBeginCatch-Lffcall /* region 3 start */ 1660 .long LffcallBeginCatch_end-LffcallBeginCatch /* length */ 1661 .long 0 /* landing pad */ 1662 .byte 0x0 /* uleb128 0x0; action */ 1663 1664 .long LffcallEndCatch-Lffcall 1665 .long LffcallEndCatch_end-LffcallEndCatch /* length */ 1666 .long 0x0 /* landing pad */ 1667 .byte 0x0 /* uleb128 0x0; action */ 1668 1669 .byte 0x1 /* Action record table */ 1670 .byte 0x0 1671 .align 3 1672 .quad 0 /* _OBJC_EHTYPE_$_NSException */ 1673 .text 1633 1674 __endif 1634 1675 __endif … … 1639 1680 r9 and r10 - at least - are overloaded as dedicated lisp registers */ 1640 1681 _spentry(poweropen_ffcall_return_registers) 1682 LocalLabelPrefix[]ffcall_return_registers: 1641 1683 __(mflr loc_pc) 1642 1684 __(vpush_saveregs()) /* Now we can use save0-save7 to point to stacks */ … … 1675 1717 __(li rcontext,0) 1676 1718 __endif 1719 LocalLabelPrefix[]ffcall_return_registers_setup: 1677 1720 __(mtctr nargs) 1678 1721 __(ldr(r3,c_frame.param0(sp))) … … 1687 1730 /* to the function on entry. */ 1688 1731 __(mr r12,nargs) 1732 LocalLabelPrefix[]ffcall_return_registers_setup_end: 1733 LocalLabelPrefix[]ffcall_return_registers_call: 1689 1734 __(bctrl) 1735 LocalLabelPrefix[]ffcall_return_registers_call_end: 1690 1736 __(str(r3,0*node_size(save7))) 1691 1737 __(str(r4,1*node_size(save7))) … … 1754 1800 __(mtxer rzero) 1755 1801 __(mtctr rzero) 1756 __(blr) 1757 1802 __ifdef([DARWIN]) 1803 __ifdef([PPC64]) 1804 __(li imm3,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION) 1805 __(ld imm4,tcr.flags(rcontext)) 1806 __(and. imm3,imm3,imm4) 1807 __(bne 0f) 1808 __endif 1809 __endif 1810 __(blr) 1811 1812 __ifdef([DARWIN]) 1813 __ifdef([PPC64]) 1814 0: /* Got here because TCR_FLAG_BIT_FOREIGN_EXCEPTION */ 1815 /* was set in tcr.flags. Clear that bit. */ 1816 __(andc imm4,imm4,imm3) 1817 __(std imm4,tcr.flags(rcontext)) 1818 /* Unboxed foreign exception (likely an NSException) in %imm0. */ 1819 /* Box it, then signal a lisp error. */ 1820 __(Misc_Alloc_Fixed(arg_z,imm1,macptr.size)) 1821 __(std imm0,macptr.address(arg_z)) 1822 __(li arg_y,XFOREIGNEXCEPTION) 1823 __(set_nargs(2)) 1824 __(b _SPksignalerr) 1825 /* Handle exceptions, for ObjC 2.0 */ 1826 LocalLabelPrefix[]ffcall_return_registersLandingPad: 1827 __(mr save1,r3) 1828 __(cmpdi r4,1) 1829 __(beq 1f) 1830 LocalLabelPrefix[]ffcall_return_registersUnwindResume: 1831 __(ref_global(r12,unwind_resume)) 1832 __(mtctr r12) 1833 __(bctrl) 1834 LocalLabelPrefix[]ffcall_return_registersUnwindResume_end: 1835 1: __(mr r3,save1) 1836 LocalLabelPrefix[]ffcall_return_registersBeginCatch: 1837 __(ref_global(r12,objc2_begin_catch)) 1838 __(mtctr r12) 1839 __(bctrl) 1840 LocalLabelPrefix[]ffcall_return_registersBeginCatch_end: 1841 __(ld save1,0(r3)) /* indirection is necessary because we don't provide type info in lsda */ 1842 LocalLabelPrefix[]ffcall_return_registersEndCatch: 1843 __(ref_global(r12,objc2_end_catch)) 1844 __(mtctr r12) 1845 __(bctrl) 1846 LocalLabelPrefix[]ffcall_return_registersEndCatch_end: 1847 __(ref_global(r12,get_tcr)) 1848 __(mtctr r12) 1849 __(li imm0,1) 1850 __(bctrl) 1851 __(ld imm2,tcr.flags(imm0)) 1852 __(ori imm2,imm2,1<<TCR_FLAG_BIT_FOREIGN_EXCEPTION) 1853 __(std imm2,tcr.flags(imm0)) 1854 __(mr imm0,save1) 1855 __(b LocalLabelPrefix[]ffcall_return_registers_call_end) 1856 LocalLabelPrefix[]ffcall_return_registers_end: 1857 .section __DATA,__gcc_except_tab 1858 GCC_except_table1: 1859 .align 3 1860 LLSDA2: 1861 .byte 0xff /* @LPStart format (omit) */ 1862 .byte 0x0 /* @TType format (absolute) */ 1863 .byte 0x4d /* uleb128 0x4d; @TType base offset */ 1864 .byte 0x3 /* call-site format (udata4) */ 1865 .byte 0x41 /* uleb128 0x41; Call-site table length */ 1866 1867 .long Lffcall_return_registers_setup-Lffcall_return_registers /* region 0 start */ 1868 .long Lffcall_return_registers_setup_end-Lffcall_return_registers_setup /* length */ 1869 .long 0x0 /* landing pad */ 1870 .byte 0x0 /* uleb128 0x0; action */ 1871 1872 .long Lffcall_return_registers_call-Lffcall_return_registers /* region 1 start */ 1873 .long Lffcall_return_registers_call_end-Lffcall_return_registers_call /* length */ 1874 .long Lffcall_return_registersLandingPad-Lffcall_return_registers /* landing pad */ 1875 .byte 0x1 /* uleb128 0x1; action */ 1876 1877 .long Lffcall_return_registersUnwindResume-Lffcall_return_registers /* region 2 start */ 1878 .long Lffcall_return_registersUnwindResume_end-Lffcall_return_registersUnwindResume /* length */ 1879 .long 0x0 /* landing pad */ 1880 .byte 0x0 /* uleb128 0x0; action */ 1881 1882 .long Lffcall_return_registersBeginCatch-Lffcall_return_registers /* region 3 start */ 1883 .long Lffcall_return_registersBeginCatch_end-Lffcall_return_registersBeginCatch /* length */ 1884 .long 0 /* landing pad */ 1885 .byte 0x0 /* uleb128 0x0; action */ 1886 1887 .long Lffcall_return_registersEndCatch-Lffcall_return_registers 1888 .long Lffcall_return_registersEndCatch_end-Lffcall_return_registersEndCatch /* length */ 1889 .long 0x0 /* landing pad */ 1890 .byte 0x0 /* uleb128 0x0; action */ 1891 .byte 0x1 /* Action record table */ 1892 .byte 0x0 1893 .align 3 1894 .quad 0 /* _OBJC_EHTYPE_$_NSException */ 1895 .text 1896 __endif 1897 __endif 1898 1758 1899 1759 1900 … … 6832 6973 6833 6974 6975 __ifdef([DARWIN]) 6976 __ifdef([PPC64]) 6977 6978 .section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support 6979 EH_frame1: 6980 .set L$set$12,LECIE1-LSCIE1 6981 .long L$set$12 /* Length of Common Information Entry */ 6982 LSCIE1: 6983 .long 0x0 /* CIE Identifier Tag */ 6984 .byte 0x1 /* CIE Version */ 6985 .ascii "zPLR\0" /* CIE Augmentation */ 6986 .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ 6987 .byte 0x78 /* sleb128 -8; CIE Data Alignment Factor */ 6988 .byte 0x10 /* CIE RA Column */ 6989 .byte 0x7 6990 .byte 0x8c 6991 .quad lisp_globals.objc_2_personality 6992 .byte 0x10 /* LSDA Encoding (pcrel) */ 6993 .byte 0x10 /* FDE Encoding (pcrel) */ 6994 .byte 0xc 6995 .byte 0x1 6996 .byte 0x0 6997 .byte 0xc /* DW_CFA_def_cfa */ 6998 .byte 0x7 /* uleb128 0x7 */ 6999 .byte 0x8 /* uleb128 0x8 */ 7000 .byte 0x90 /* DW_CFA_offset, column 0x10 */ 7001 .byte 0x1 /* uleb128 0x1 */ 7002 .align 3 7003 LECIE1: 7004 .globl _SPffcall.eh 7005 _SPffcall.eh: 7006 .long LEFDEffcall-LSFDEffcall 7007 LSFDEffcall: 7008 .long LSFDEffcall-EH_frame1 /* FDE CIE offset */ 7009 .quad Lffcall-. /* FDE Initial Location */ 7010 .quad Lffcall_end-Lffcall /* FDE address range */ 7011 .byte 8 /* uleb128 0x8; Augmentation size */ 7012 .quad LLSDA1-. /* Language Specific Data Area */ 7013 .byte 0x4 /* DW_CFA_advance_loc4 */ 7014 .long Lffcall_setup-Lffcall 7015 .byte 0xe /* DW_CFA_def_cfa_offset */ 7016 .byte 0x10 /* uleb128 0x10 */ 7017 .byte 0x86 /* DW_CFA_offset, column 0x6 */ 7018 .byte 0x2 /* uleb128 0x2 */ 7019 .byte 0x4 /* DW_CFA_advance_loc4 */ 7020 .long Lffcall_setup_end-Lffcall_setup 7021 .byte 0xd /* DW_CFA_def_cfa_register */ 7022 .byte 0x6 /* uleb128 0x6 */ 7023 .byte 0x4 /* DW_CFA_advance_loc4 */ 7024 .long Lffcall_call_end-Lffcall_call 7025 .byte 0x83 /* DW_CFA_offset, column 0x3 */ 7026 .byte 0x3 /* uleb128 0x3 */ 7027 .align 3 7028 LEFDEffcall: 7029 .globl _SPffcall_return_registers.eh 7030 _SPffcall_return_registers.eh: 7031 .set Lfmh,LEFDEffcall_return_registers-LSFDEffcall_return_registers 7032 .long Lfmh 7033 LSFDEffcall_return_registers: 7034 .long LSFDEffcall_return_registers-EH_frame1 /* FDE CIE offset */ 7035 .quad Lffcall_return_registers-. /* FDE Initial Location */ 7036 .quad Lffcall_return_registers_end-Lffcall_return_registers /* FDE address range */ 7037 .byte 8 /* uleb128 0x8; Augmentation size */ 7038 .quad LLSDA2-. /* Language Specific Data Area */ 7039 .byte 0x4 /* DW_CFA_advance_loc4 */ 7040 .long Lffcall_return_registers_setup-Lffcall_return_registers 7041 .byte 0xe /* DW_CFA_def_cfa_offset */ 7042 .byte 0x10 /* uleb128 0x10 */ 7043 .byte 0x86 /* DW_CFA_offset, column 0x6 */ 7044 .byte 0x2 /* uleb128 0x2 */ 7045 .byte 0x4 /* DW_CFA_advance_loc4 */ 7046 .long Lffcall_return_registers_setup_end-Lffcall_return_registers_setup 7047 .byte 0xd /* DW_CFA_def_cfa_register */ 7048 .byte 0x6 /* uleb128 0x6 */ 7049 .byte 0x4 /* DW_CFA_advance_loc4 */ 7050 .long Lffcall_return_registers_call_end-Lffcall_return_registers_call 7051 .byte 0x83 /* DW_CFA_offset, column 0x3 */ 7052 .byte 0x3 /* uleb128 0x3 */ 7053 .align 3 7054 LEFDEffcall_return_registers: 7055 .text 7056 __endif 7057 __endif 6834 7058 6835 7059
Note:
See TracChangeset
for help on using the changeset viewer.
