Changeset 11828


Ignore:
Timestamp:
Mar 20, 2009, 9:40:31 AM (11 years ago)
Author:
gb
Message:

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.

Location:
trunk/source/lisp-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-macros.s

    r11556 r11828  
    708708macro_label(done):
    709709])
     710
     711        __ifdef([WINDOWS])
     712define([windows_cstack_probe],[
     713        new_macro_labels()
     714        __(cmpl [$]0x1000,$1)
     715        __(jb macro_label(done))
     716        __(movl rcontext(tcr.foreign_sp),$2)
     717        __(orl [$]0,-0x1000($2))
     718        __(cmpl [$]0x2000,$1)
     719        __(jb macro_label(done))
     720        __(orl [$]0,-0x2000($2))
     721        __(cmpl [$]0x3000,$1)
     722        __(jb macro_label(done))
     723        __(orl [$]0,-0x3000($2))
     724        __(cmpl [$]0x4000,$1)
     725        __(jb macro_label(done))
     726        __(orl [$]0,-0x4000($2))
     727        __(cmpl [$]0x5000,$1)
     728        __(jb macro_label(done))
     729        __(orl [$]0,-0x5000($2))
     730        __(cmpl [$]0x6000,$1)
     731        __(jb macro_label(done))
     732        __(orl [$]0,-0x6000($2))
     733        __(cmpl [$]0x7000,$1)
     734        __(jb macro_label(done))
     735        __(orl [$]0,-0x7000($2))
     736        __(cmpl [$]0x8000,$1)
     737        __(jb macro_label(done))
     738        __(orl [$]0,-0x8000($2))
     739        __(cmpl [$]0x9000,$1)
     740        __(jb macro_label(done))
     741        __(orl [$]0,-0x9000($2))
     742        __(cmpl [$]0xa000,$1)
     743        __(jb macro_label(done))
     744        __(orl [$]0,-0xa000($2))
     745        __(cmpl [$]0xb000,$1)
     746        __(jb macro_label(done))
     747        __(orl [$]0,-0xb000($2))
     748        __(cmpl [$]0xc000,$1)
     749        __(jb macro_label(done))
     750        __(orl [$]0,-0xc000($2))
     751        __(cmpl [$]0xd000,$1)
     752        __(jb macro_label(done))
     753        __(orl [$]0,-0xd000($2))
     754        __(cmpl [$]0xe000,$1)
     755        __(jb macro_label(done))
     756        __(orl [$]0,-0xe000($2))
     757        __(cmpl [$]0xf000,$1)
     758        __(jb macro_label(done))
     759        __(orl [$]0,-0xf000($2))
     760macro_label(done):     
     761])
     762
     763
     764        __endif               
    710765                       
  • trunk/source/lisp-kernel/x86-spentry32.s

    r11794 r11828  
    20032003        __(cmpl $tstack_alloc_limit,%imm0)
    20042004        __(ja local_label(stack_misc_alloc_heap_alloc_ivector))
     2005        __ifdef([WINDOWS])
     2006         __(windows_cstack_probe(%imm0,%temp1))
     2007        __endif
    20052008        __(movd rcontext(tcr.foreign_sp),%stack_temp)
    20062009        __(movd %stack_temp,%temp1)
     
    27032706        __(cmpl $tstack_alloc_limit,%imm0)
    27042707        __(jae 1f)
     2708        __ifdef([WINDOWS])
     2709         __(windows_cstack_probe(%imm0,%arg_z))
     2710        __endif
    27052711        __(movd rcontext(tcr.foreign_sp),%mm0)
    27062712        __(subl %imm0,rcontext(tcr.foreign_sp))
     
    27302736        __(cmpl $tstack_alloc_limit,%imm0)
    27312737        __(jae 9f)
     2738        __ifdef([WINDOWS])
     2739         __(windows_cstack_probe(%imm0,%temp0))
     2740        __endif
    27322741        __(movl rcontext(tcr.foreign_sp),%temp0)
    27332742        __(subl %imm0,rcontext(tcr.foreign_sp))
Note: See TracChangeset for help on using the changeset viewer.