Changeset 15082
- Timestamp:
- Nov 19, 2011, 2:35:26 PM (13 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/arm-spentry.s (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/arm-spentry.s
r14971 r15082 1055 1055 __(uuo_error_reg_not_xtype(al,arg_y,xtype_unsigned_byte_24)) 1056 1056 1: 1057 __(unbox_fixnum(imm 0,arg_z))1058 __(extract_fulltag(imm1,imm 0))1057 __(unbox_fixnum(imm2,arg_z)) 1058 __(extract_fulltag(imm1,imm2)) 1059 1059 __(cmp imm1,#fulltag_nodeheader) 1060 1060 __(bne 1f) 1061 1061 __(dnode_align(imm1,arg_y,node_size)) 1062 __(cmp imm1,#stack_alloc_limit)1063 __(bhs stack_misc_alloc_no_room)1064 1062 __(mov imm0,#subtag_u32_vector) 1065 1063 __(orr imm0,imm0,arg_y,lsl #num_subtag_bits-fixnumshift) 1066 __(mov temp0,#stack_alloc_marker) 1067 __(mov temp1,sp) 1068 __(stack_allocate_zeroed_ivector(imm0,imm1)) 1069 __(unbox_fixnum(imm0,arg_z)) 1070 __(strb imm0,[sp]) 1071 __(add arg_z,sp,#fulltag_misc) 1072 __(stmdb sp!,{temp0,temp1}) 1073 __(bx lr) 1064 __(b 9f) 1074 1065 1: __(mov imm0,arg_y,lsl #num_subtag_bits-fixnumshift) 1075 1066 __(orr imm0,imm0,arg_z,lsr #fixnumshift) … … 1089 1080 __(movne imm1,imm1,lsr#3+fixnumshift) 1090 1081 8: __(dnode_align(imm1,imm1,node_size)) 1091 __(cmp imm1,#stack_alloc_limit) 1092 __(bhs stack_misc_alloc_no_room) 1082 9: 1083 __(ldr temp0,[rcontext,tcr.cs_limit]) 1084 __(sub temp1,sp,imm1) 1085 __(cmp temp1,temp0) 1086 __(bls stack_misc_alloc_no_room) 1093 1087 __(mov temp0,#stack_alloc_marker) 1094 1088 __(mov temp1,sp) 1095 1089 __(stack_allocate_zeroed_ivector(imm0,imm1)) 1096 1090 __(add arg_z,sp,#fulltag_misc) 1091 __(strb imm2,[sp]) 1097 1092 __(stmdb sp!,{temp0,temp1}) 1098 1093 __(bx lr) … … 1328 1323 __(mov imm1,imm1,lsl #num_subtag_bits-fixnumshift) 1329 1324 __(orr imm1,imm1,#subtag_u32_vector) 1330 __(cmp imm0,#stack_alloc_limit) 1331 __(bge 3f) 1325 __(sub arg_x,sp,imm0) 1326 __(ldr arg_y,[rcontext,#tcr.cs_limit]) 1327 __(cmp arg_x,arg_y) 1328 __(blo 3f) 1332 1329 __(stack_allocate_zeroed_ivector(imm1,imm0)) 1333 1330 __(mov imm0,#subtag_simple_vector) … … 1644 1641 __(add imm1,imm1,#node_size) 1645 1642 __(add imm0,imm1,#node_size) 1646 __(cmp imm0,#stack_alloc_limit) 1643 __(sub imm2,sp,imm0) 1644 __(ldr temp0,[rcontext,#tcr.cs_limit]) 1645 __(cmp imm2,temp0) 1647 1646 __(mov temp0,sp) 1648 __(b hs 1f)1647 __(bls 1f) 1649 1648 __(mov imm1,imm1,lsl #num_subtag_bits) 1650 1649 __(orr imm1,imm1,#subtag_u8_vector) … … 1676 1675 __(add imm1,imm1,#node_size) 1677 1676 __(add imm0,imm1,#node_size) 1678 __(cmp imm0,#stack_alloc_limit) 1677 __(sub imm2,sp,imm0) 1678 __(ldr temp0,[rcontext,#tcr.cs_limit]) 1679 __(cmp imm2,temp0) 1679 1680 __(mov temp0,sp) 1680 __(b hs 1f)1681 __(bls 1f) 1681 1682 __(mov imm1,imm1,lsl #num_subtag_bits) 1682 1683 __(orr imm1,imm1,#subtag_u8_vector) … … 1713 1714 __(orr imm1,imm1,#subtag_u32_vector) 1714 1715 __(add imm0,imm0,#dnode_size) 1715 __(cmp imm0,#stack_alloc_limit) 1716 __(bge 4f) 1716 __(ldr temp0,[rcontext,#tcr.cs_limit]) 1717 __(sub imm2,sp,imm0) 1718 __(cmp imm2,temp0) 1719 __(bls 4f) 1717 1720 __(stack_allocate_zeroed_ivector(imm1,imm0)) 1718 1721 __(mov imm0,#subtag_simple_vector) … … 1755 1758 __(mov imm1,imm0,lsl #num_subtag_bits-fixnumshift) 1756 1759 __(orr imm1,imm1,#subtag_u32_vector) 1760 __(sub temp2,sp,imm1) 1761 __(ldr arg_x,[rcontext,#tcr.cs_limit]) 1762 __(cmp temp2,arg_x) 1757 1763 __(mov temp2,sp) 1758 1764 __(mov arg_x,#stack_alloc_marker) 1765 __(bls 3f) 1759 1766 __(stack_allocate_zeroed_ivector(imm1,temp1)) 1760 1767 __(unbox_fixnum(imm1,temp0)) … … 1771 1778 __(add vsp,vsp,#fixnumone) 1772 1779 __(bx lr) 1773 1780 3: /* Have to heap-cons. */ 1781 __(stmdb sp!,{arg_x,temp2}) 1782 __(vpush1(nargs)) 1783 __(mov arg_y,nargs) 1784 __(mov arg_z,temp0) 1785 __(build_lisp_frame(imm0)) 1786 __(bl _SPmisc_alloc) 1787 __(restore_lisp_frame(imm0)) 1788 __(vpop1(nargs)) 1789 __(add imm0,nargs,#misc_data_offset) 1790 __(b 5f) 1791 4: __(vpop1(temp0)) 1792 __(subs imm0,imm0,#fixnumone) 1793 __(str temp0,[arg_z,imm0]) 1794 5: __(subs nargs,nargs,#fixnumone) 1795 __(bne 4b) 1796 __(add vsp,vsp,#fixnumone) 1797 __(bx lr) 1798 1774 1799 /* Allocate a "fulltag_misc" object. On entry, arg_y contains the element */ 1775 1800 /* count (boxed) and arg_z contains the subtag (boxed). Both of these */ … … 2065 2090 __(bne stack_misc_alloc_init_ivector) 2066 2091 __(dnode_align(imm1,arg_x,node_size)) 2067 __(cmp imm1,#stack_alloc_limit) 2068 __(bge stack_misc_alloc_init_no_room) 2092 __(ldr temp1,[rcontext,#tcr.cs_limit]) 2093 __(sub temp0,sp,imm1) 2094 __(cmp temp0,temp1) 2095 __(bls stack_misc_alloc_init_no_room) 2069 2096 __(mov imm0,#subtag_u32_vector) 2070 2097 __(orr imm0,imm0,arg_x,lsl #num_subtag_bits-fixnumshift) … … 4304 4331 __(movne imm1,imm1,lsr#3+fixnumshift) 4305 4332 8: __(dnode_align(imm1,imm1,node_size)) 4306 __(cmp imm1,#stack_alloc_limit) 4307 __(bhs stack_misc_alloc_init_no_room) 4333 __(ldr temp0,[rcontext,#tcr.cs_limit]) 4334 __(sub temp1,sp,imm1) 4335 __(cmp temp1,temp0) 4336 __(bls stack_misc_alloc_init_no_room) 4308 4337 __(mov temp0,#stack_alloc_marker) 4309 4338 __(mov temp1,sp)
Note:
See TracChangeset
for help on using the changeset viewer.
