... |
... |
@@ -152,20 +152,12 @@ lra: |
152
|
152
|
.global call_into_c
|
153
|
153
|
FUNCDEF(call_into_c)
|
154
|
154
|
call_into_c:
|
155
|
|
-#ifdef v8plus
|
156
|
|
- stx %o2, [%fp + STACK_BIAS - 8 - 1*8]
|
157
|
|
- stx %o3, [%fp + STACK_BIAS - 8 - 2*8]
|
158
|
|
- stx %o4, [%fp + STACK_BIAS - 8 - 3*8]
|
159
|
|
- stx %o5, [%fp + STACK_BIAS - 8 - 4*8]
|
160
|
|
- stx %o6, [%fp + STACK_BIAS - 8 - 5*8]
|
161
|
|
- stx %o7, [%fp + STACK_BIAS - 8 - 6*8]
|
162
|
|
-#endif
|
163
|
155
|
/* Build a lisp stack frame */
|
164
|
156
|
mov reg_CFP, reg_OCFP
|
165
|
157
|
mov reg_CSP, reg_CFP
|
166
|
|
- add reg_CSP, 32, reg_CSP
|
167
|
|
- st reg_OCFP, [reg_CFP]
|
168
|
|
- st reg_CODE, [reg_CFP+8]
|
|
158
|
+ add reg_CSP, 64, reg_CSP
|
|
159
|
+ stn reg_OCFP, [reg_CFP]
|
|
160
|
+ stn reg_CODE, [reg_CFP+8]
|
169
|
161
|
|
170
|
162
|
/* Turn on pseudo-atomic. */
|
171
|
163
|
or reg_ALLOC, pseudo_atomic_Value, reg_ALLOC
|
... |
... |
@@ -173,7 +165,7 @@ call_into_c: |
173
|
165
|
/* Convert the return address to an offset and save it on the stack. */
|
174
|
166
|
sub reg_LIP, reg_CODE, reg_L0
|
175
|
167
|
add reg_L0, type_OtherPointer, reg_L0
|
176
|
|
- st reg_L0, [reg_CFP+4]
|
|
168
|
+ stn reg_L0, [reg_CFP+2*8]
|
177
|
169
|
|
178
|
170
|
/* Store LISP state */
|
179
|
171
|
store(reg_BSP,current_binding_stack_pointer)
|
... |
... |
@@ -226,8 +218,8 @@ call_into_c: |
226
|
218
|
load(current_control_frame_pointer, reg_CFP)
|
227
|
219
|
|
228
|
220
|
/* Get the return address back. */
|
229
|
|
- ld [reg_CFP+4], reg_LIP
|
230
|
|
- ld [reg_CFP+8], reg_CODE
|
|
221
|
+ ldn [reg_CFP+8], reg_LIP
|
|
222
|
+ ldn [reg_CFP+16], reg_CODE
|
231
|
223
|
add reg_LIP, reg_CODE, reg_LIP
|
232
|
224
|
sub reg_LIP, type_OtherPointer, reg_LIP
|
233
|
225
|
|
... |
... |
@@ -241,14 +233,6 @@ call_into_c: |
241
|
233
|
mov reg_CFP, reg_CSP
|
242
|
234
|
mov reg_OCFP, reg_CFP
|
243
|
235
|
|
244
|
|
-#ifdef v8plus
|
245
|
|
- ldx [%fp + STACK_BIAS - 8 - 1*8], %o2
|
246
|
|
- ldx [%fp + STACK_BIAS - 8 - 2*8], %o3
|
247
|
|
- ldx [%fp + STACK_BIAS - 8 - 3*8], %o4
|
248
|
|
- ldx [%fp + STACK_BIAS - 8 - 4*8], %o5
|
249
|
|
- ldx [%fp + STACK_BIAS - 8 - 5*8], %o6
|
250
|
|
- ldx [%fp + STACK_BIAS - 8 - 6*8], %o7
|
251
|
|
-#endif
|
252
|
236
|
/* And back into lisp. */
|
253
|
237
|
ret
|
254
|
238
|
nop
|