[Openmcl-cvs-notifications] r14188 - in /trunk/source/lisp-kernel: arm-spentry.s arm-subprims.s
gb at clozure.com
gb at clozure.com
Sat Aug 14 09:11:42 CDT 2010
Author: gb
Date: Sat Aug 14 09:11:41 2010
New Revision: 14188
Log:
Ensure that stack pointer is aligned on an 8-byte boundary when calling
into lisp (the iOS ABI doesn't ensure this.)
Modified:
trunk/source/lisp-kernel/arm-spentry.s
trunk/source/lisp-kernel/arm-subprims.s
Modified: trunk/source/lisp-kernel/arm-spentry.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/arm-spentry.s (original)
+++ trunk/source/lisp-kernel/arm-spentry.s Sat Aug 14 09:11:41 2010
@@ -3031,6 +3031,10 @@
__(mov r0,#1)
__(blx r12)
__(mov rcontext,r0)
+ __(tst sp,#4)
+ __(mov imm2,sp)
+ __(strne imm2,[sp,#-4]!)
+ __(streq imm2,[sp,#-8]!)
__(ldr imm2,[rcontext,#tcr.last_lisp_frame])
__(sub imm0,imm2,sp)
__(add imm0,imm0,#node_size)
@@ -3058,7 +3062,7 @@
__(str allocptr,[rcontext,#tcr.save_allocptr])
__(mov imm0,#TCR_STATE_FOREIGN)
__(str imm0,[rcontext,#tcr.valence])
- __(add sp,sp,#node_size*2) /* drop the ivector that hides foreig=
n stack contents */
+ __(ldr sp,[sp,#node_size*2]) /* drop the ivector that hides fore=
ign stack contents and restore (possibly misaligned) sp */
__(ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr})
__(ldmia sp!,{r0,r1})
__(add sp,sp,#4*node_size)
Modified: trunk/source/lisp-kernel/arm-subprims.s
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/arm-subprims.s (original)
+++ trunk/source/lisp-kernel/arm-subprims.s Sat Aug 14 09:11:41 2010
@@ -62,6 +62,10 @@
_exportfn(C(start_lisp))
__(stmdb sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr})
__(mov rcontext,r0)
+ __(mov r0,sp)
+ __(tst sp,#4)
+ __(strne r0,[sp,#-4]!)
+ __(streq r0,[sp,#-8]!)
__(mov arg_z,#0)
__(mov arg_y,#0)
__(mov arg_x,#0)
@@ -86,6 +90,7 @@
__(str imm1,[rcontext,#tcr.last_lisp_frame])
__(str imm0,[rcontext,#tcr.valence])
__(mov imm0,#nil_value)
+ __(ldr sp,[sp])
__(ldmia sp!,{r4,r5,r6,r7,r8,r9,r10,r11,r12,lr})
__(bx lr)
=
More information about the Openmcl-cvs-notifications
mailing list