[Openmcl-cvs-notifications] r11828 - in /trunk/source/lisp-kernel: x86-macros.s x86-spentry32.s

gb at clozure.com gb at clozure.com
Fri Mar 20 05:40:32 EDT 2009


Author: gb
Date: Fri Mar 20 05:40:31 2009
New Revision: 11828

Log:
The cstack on windows needs to be committed a page at a time, so do
stack probes (via new macro 'windows_cstack_probe').  Use the macro
in x86-spentry32.s; not sure if it's needed on win64.

Modified:
    trunk/source/lisp-kernel/x86-macros.s
    trunk/source/lisp-kernel/x86-spentry32.s

Modified: trunk/source/lisp-kernel/x86-macros.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/x86-macros.s (original)
+++ trunk/source/lisp-kernel/x86-macros.s Fri Mar 20 05:40:31 2009
@@ -707,4 +707,59 @@
         __(hlt)
 macro_label(done):
 ])
+
+        __ifdef([WINDOWS])
+define([windows_cstack_probe],[
+        new_macro_labels()
+        __(cmpl [$]0x1000,$1)
+        __(jb macro_label(done))
+        __(movl rcontext(tcr.foreign_sp),$2)
+        __(orl [$]0,-0x1000($2))
+        __(cmpl [$]0x2000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x2000($2))
+        __(cmpl [$]0x3000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x3000($2))
+        __(cmpl [$]0x4000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x4000($2))
+        __(cmpl [$]0x5000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x5000($2))
+        __(cmpl [$]0x6000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x6000($2))
+        __(cmpl [$]0x7000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x7000($2))
+        __(cmpl [$]0x8000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x8000($2))
+        __(cmpl [$]0x9000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0x9000($2))
+        __(cmpl [$]0xa000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xa000($2))
+        __(cmpl [$]0xb000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xb000($2))
+        __(cmpl [$]0xc000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xc000($2))
+        __(cmpl [$]0xd000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xd000($2))
+        __(cmpl [$]0xe000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xe000($2))
+        __(cmpl [$]0xf000,$1)
+        __(jb macro_label(done))
+        __(orl [$]0,-0xf000($2))
+macro_label(done):      =

+])
+
+
+        __endif                =

                         =


Modified: trunk/source/lisp-kernel/x86-spentry32.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/x86-spentry32.s (original)
+++ trunk/source/lisp-kernel/x86-spentry32.s Fri Mar 20 05:40:31 2009
@@ -2002,6 +2002,9 @@
 	__(dnode_align(%imm0,tsp_frame.fixed_overhead+node_size,%imm0))
 	__(cmpl $tstack_alloc_limit,%imm0)
 	__(ja local_label(stack_misc_alloc_heap_alloc_ivector))
+        __ifdef([WINDOWS])
+         __(windows_cstack_probe(%imm0,%temp1))
+        __endif
 	__(movd rcontext(tcr.foreign_sp),%stack_temp)
 	__(movd %stack_temp,%temp1)
 	__(subl %imm0,rcontext(tcr.foreign_sp))
@@ -2702,6 +2705,9 @@
 	__(dnode_align(%imm0,tsp_frame.fixed_overhead+macptr.size,%imm0))
 	__(cmpl $tstack_alloc_limit,%imm0)
 	__(jae 1f)
+        __ifdef([WINDOWS])
+         __(windows_cstack_probe(%imm0,%arg_z))
+        __endif
 	__(movd rcontext(tcr.foreign_sp),%mm0)
 	__(subl %imm0,rcontext(tcr.foreign_sp))
 	__(movl rcontext(tcr.foreign_sp),%arg_z)
@@ -2729,6 +2735,9 @@
 	__(dnode_align(%imm0,tsp_frame.fixed_overhead+macptr.size,%imm0))
 	__(cmpl $tstack_alloc_limit,%imm0)
 	__(jae 9f)
+        __ifdef([WINDOWS])
+         __(windows_cstack_probe(%imm0,%temp0))
+        __endif
         __(movl rcontext(tcr.foreign_sp),%temp0)
         __(subl %imm0,rcontext(tcr.foreign_sp))
         __(movl rcontext(tcr.foreign_sp),%arg_z)



More information about the Openmcl-cvs-notifications mailing list