Changeset 9398


Ignore:
Timestamp:
May 8, 2008, 4:09:48 AM (11 years ago)
Author:
rme
Message:

Make .SPcallback basically work.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ia32/lisp-kernel/x86-spentry32.s

    r9379 r9398  
    38643864
    38653865_spentry(callback)
    3866         __(int $3)
    38673866        __(push %ebp)
    38683867        __(movl %esp,%ebp)
     3868        /* C scalar args are already on the stack. */
     3869        /* arg word 0 at 8(%ebp), word 1 at 12(%ebp), etc. */
     3870
    38693871        /* C NVRs */
    38703872        __(push %edi)
    38713873        __(push %esi)
    38723874        __(push %ebx)
     3875        __(push %ebp)
    38733876       
    3874         __(movl %eax,%edi)
     3877        __(box_fixnum(%eax,%esi))       /* put callback index in arg_y */
    38753878        __(ref_global(get_tcr,%eax))
    38763879        __(push $1)
    38773880        __(call *%eax)
    3878         /* linear TCR addr now in %eax; callback index in %edi */
    3879         __(movl %edi,%eax)
     3881        /* linear TCR addr now in %eax */
    38803882        __(push %rcontext:tcr.foreign_sp)
     3883        __(movl %esp,%rcontext:tcr.foreign_sp)
    38813884        __(clr %arg_z)
    3882         __(clr %arg_y)
     3885        /* arg_y contains callback index */
    38833886        __(clr %temp1)
    38843887        __(clr %temp0)
     
    38863889        __(pxor %fpzero,%fpzero)
    38873890        __(movl %rcontext:tcr.save_vsp,%esp)
    3888         __(box_fixnum(%eax,%arg_y))
    38893891        __(movl %ebp,%arg_z)
     3892        __(movl %rcontext:tcr.save_ebp,%ebp)
    38903893        __(movl $TCR_STATE_LISP,%rcontext:tcr.valence)
    38913894        __(stmxcsr %rcontext:tcr.foreign_mxcsr)
     
    39043907        __(emms)
    39053908        __(pop %rcontext:tcr.foreign_sp)
     3909        __(addl $node_size,%esp)
    39063910        __(ldmxcsr %rcontext:tcr.foreign_mxcsr)
     3911        __(pop %ebp)
    39073912        __(pop %ebx)
    39083913        __(pop %esi)
    39093914        __(pop %edi)
     3915        __(movl -4(%ebp),%eax)
     3916        /* fp result? */
    39103917        __(leave)
    39113918        __(ret)
Note: See TracChangeset for help on using the changeset viewer.