Changeset 5879
- Timestamp:
- Feb 10, 2007, 9:26:15 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/lisp-kernel/x86-spentry64.s (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/lisp-kernel/x86-spentry64.s
r5821 r5879 3981 3981 /* Unbox %arg_z. It's either a fixnum or macptr (or bignum) ; 3982 3982 if not a fixnum, get the first word */ 3983 __(unbox_fixnum(%arg_z,%imm 0))3983 __(unbox_fixnum(%arg_z,%imm1)) 3984 3984 __(testb $fixnummask,%arg_z_b) 3985 3985 __(je 0f) 3986 __(movq macptr.address(%arg_z),%imm 0)3986 __(movq macptr.address(%arg_z),%imm1) 3987 3987 0: 3988 3988 /* Save lisp registers */ … … 4010 4010 __(movq (%rsp),%rbp) 4011 4011 __ifdef([DARWIN_GS_HACK]) 4012 /* At this point, %imm0=%rax is live (contains 4013 the entrypoint); the lisp registers are 4012 /* At this point, %imm1=%rdx is live (contains 4013 the entrypoint) and %imm0.b=%al contains 4014 info about xmm register arguments; the lisp registers are 4014 4015 all saved, and the foreign arguments are 4015 4016 on the foreign stack (about to be popped … … 4021 4022 a fixnum */ 4022 4023 __(save_tcr_linear(%save0)) 4023 __(movq %imm0,%save1) 4024 __(movq %imm1,%save1) 4025 __(movq %imm0,%save2) 4024 4026 __(set_foreign_gs_base()) 4025 __(movq %save1,%imm0) 4027 __(movq %save1,%imm1) 4028 __(movq %save2,%imm0) 4026 4029 __endif 4027 4030 __(addq $2*node_size,%rsp) 4031 __(movq %imm1,%r11) 4028 4032 __(pop %rdi) 4029 4033 __(pop %rsi) … … 4032 4036 __(pop %r8) 4033 4037 __(pop %r9) 4034 __(call *%r ax)4038 __(call *%r11) 4035 4039 __(movq %rbp,%rsp) 4036 4040 __ifdef([DARWIN_GS_HACK]) … … 4087 4091 /* Unbox %arg_z. It's either a fixnum or macptr (or bignum) ; 4088 4092 if not a fixnum, get the first word */ 4089 __(unbox_fixnum(%arg_z,%imm 0))4093 __(unbox_fixnum(%arg_z,%imm1)) 4090 4094 __(testb $fixnummask,%arg_z_b) 4091 4095 __(je 0f) 4092 __(movq macptr.address(%arg_z),%imm 0)4096 __(movq macptr.address(%arg_z),%imm1) 4093 4097 0: 4094 4098 /* Save lisp registers */ … … 4103 4107 __(push %save2) 4104 4108 __(push %save3) 4105 __(movq macptr.address(%arg_y),% save2) /* save2 = %r13,non-volatile */4109 __(movq macptr.address(%arg_y),%rbx) /* %rbx non-volatile */ 4106 4110 __(push %fn) 4107 4111 __(push %ra0) … … 4117 4121 __(movq (%rsp),%rbp) 4118 4122 __ifdef([DARWIN_GS_HACK]) 4119 /* At this point, %imm0=%rax is live (contains 4120 the entrypoint); the lisp registers are 4123 /* At this point, %imm1=%rdx is live (contains 4124 the entrypoint) and %imm0.b=%al contains 4125 xmm argument info; the lisp registers are 4121 4126 all saved, and the foreign arguments are 4122 4127 on the foreign stack (about to be popped … … 4129 4134 __(save_tcr_linear(%save0)) 4130 4135 __(movq %imm0,%save1) 4136 __(movq %imm1,%save2) 4131 4137 __(set_foreign_gs_base()) 4132 4138 __(movq %save1,%imm0) 4139 __(movq %save2,%imm1) 4133 4140 __endif 4141 __(movq %imm1,%r11) 4134 4142 __(addq $2*node_size,%rsp) 4135 4143 __(pop %rdi) … … 4139 4147 __(pop %r8) 4140 4148 __(pop %r9) 4141 __(call *%r ax)4142 __(movq %rax,(% save2))4143 __(movq %rdx,8(% save2))4144 __(movsd %xmm0,16(% save2))4145 __(movsd %xmm1,24(% save2))4149 __(call *%r11) 4150 __(movq %rax,(%rbx)) 4151 __(movq %rdx,8(%rbx)) 4152 __(movsd %xmm0,16(%rbx)) 4153 __(movsd %xmm1,24(%rbx)) 4146 4154 __(movq %rbp,%rsp) 4147 4155 __ifdef([DARWIN_GS_HACK])
Note:
See TracChangeset
for help on using the changeset viewer.
