aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/buildvm_x86.dasc68
-rw-r--r--src/buildvm_x86.h4
2 files changed, 36 insertions, 36 deletions
diff --git a/src/buildvm_x86.dasc b/src/buildvm_x86.dasc
index 7638cf9b..c781725f 100644
--- a/src/buildvm_x86.dasc
+++ b/src/buildvm_x86.dasc
@@ -150,28 +150,28 @@
150| pop rbx; pop rsi; pop rdi; pop rbp 150| pop rbx; pop rsi; pop rdi; pop rbp
151|.endmacro 151|.endmacro
152| 152|
153|.define UNUSED1, aword [esp+dword*26] 153|.define UNUSED1, aword [rsp+dword*26]
154|.define SAVE_PC, dword [esp+dword*25] 154|.define SAVE_PC, dword [rsp+dword*25]
155|.define SAVE_L, dword [esp+dword*24] 155|.define SAVE_L, dword [rsp+dword*24]
156|.define SAVE_ERRF, dword [esp+dword*23] 156|.define SAVE_ERRF, dword [rsp+dword*23]
157|.define SAVE_NRES, dword [esp+dword*22] 157|.define SAVE_NRES, dword [rsp+dword*22]
158|.define TMP2, dword [esp+dword*21] 158|.define TMP2, dword [rsp+dword*21]
159|.define TMP1, dword [esp+dword*20] 159|.define TMP1, dword [rsp+dword*20]
160|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by interpreter 160|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by interpreter
161|.define SAVE_RET, aword [esp+aword*9] //<-- rsp entering interpreter. 161|.define SAVE_RET, aword [rsp+aword*9] //<-- rsp entering interpreter.
162|.define SAVE_R4, aword [esp+aword*8] 162|.define SAVE_R4, aword [rsp+aword*8]
163|.define SAVE_R3, aword [esp+aword*7] 163|.define SAVE_R3, aword [rsp+aword*7]
164|.define SAVE_R2, aword [esp+aword*6] 164|.define SAVE_R2, aword [rsp+aword*6]
165|.define SAVE_R1, aword [esp+aword*5] //<-- rsp after register saves. 165|.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves.
166|.define SAVE_CFRAME, aword [esp+aword*4] 166|.define SAVE_CFRAME, aword [rsp+aword*4]
167|.define CSAVE_4, aword [esp+aword*3] 167|.define CSAVE_4, aword [rsp+aword*3]
168|.define CSAVE_3, aword [esp+aword*2] 168|.define CSAVE_3, aword [rsp+aword*2]
169|.define CSAVE_2, aword [esp+aword*1] 169|.define CSAVE_2, aword [rsp+aword*1]
170|.define CSAVE_1, aword [esp] //<-- rsp while in interpreter. 170|.define CSAVE_1, aword [rsp] //<-- rsp while in interpreter.
171|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee 171|//----- 16 byte aligned, ^^^ 32 byte register save area, owned by callee
172| 172|
173|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). 173|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ).
174|.define TMPQ, qword [esp] 174|.define TMPQ, qword [rsp]
175|.define NRESULTS, TMP2 175|.define NRESULTS, TMP2
176| 176|
177|//----------------------------------------------------------------------- 177|//-----------------------------------------------------------------------
@@ -188,24 +188,24 @@
188|.endmacro 188|.endmacro
189| 189|
190|//----- 16 byte aligned, 190|//----- 16 byte aligned,
191|.define SAVE_RET, aword [esp+aword*9] //<-- rsp entering interpreter. 191|.define SAVE_RET, aword [rsp+aword*9] //<-- rsp entering interpreter.
192|.define SAVE_R4, aword [esp+aword*8] 192|.define SAVE_R4, aword [rsp+aword*8]
193|.define SAVE_R3, aword [esp+aword*7] 193|.define SAVE_R3, aword [rsp+aword*7]
194|.define SAVE_R2, aword [esp+aword*6] 194|.define SAVE_R2, aword [rsp+aword*6]
195|.define SAVE_R1, aword [esp+aword*5] //<-- rsp after register saves. 195|.define SAVE_R1, aword [rsp+aword*5] //<-- rsp after register saves.
196|.define SAVE_CFRAME, aword [esp+aword*4] 196|.define SAVE_CFRAME, aword [rsp+aword*4]
197|.define UNUSED1, aword [esp+aword*3] 197|.define UNUSED1, aword [rsp+aword*3]
198|//----- ^^^ awords above, vvv dwords below 198|//----- ^^^ awords above, vvv dwords below
199|.define SAVE_PC, dword [esp+dword*5] 199|.define SAVE_PC, dword [rsp+dword*5]
200|.define SAVE_L, dword [esp+dword*4] 200|.define SAVE_L, dword [rsp+dword*4]
201|.define SAVE_ERRF, dword [esp+dword*3] 201|.define SAVE_ERRF, dword [rsp+dword*3]
202|.define SAVE_NRES, dword [esp+dword*2] 202|.define SAVE_NRES, dword [rsp+dword*2]
203|.define TMP2, dword [esp+dword*1] 203|.define TMP2, dword [rsp+dword*1]
204|.define TMP1, dword [esp] //<-- rsp while in interpreter. 204|.define TMP1, dword [rsp] //<-- rsp while in interpreter.
205|//----- 16 byte aligned 205|//----- 16 byte aligned
206| 206|
207|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ). 207|// TMPQ overlaps TMP1/TMP2. NRESULTS overlaps TMP2 (and TMPQ).
208|.define TMPQ, qword [esp] 208|.define TMPQ, qword [rsp]
209|.define NRESULTS, TMP2 209|.define NRESULTS, TMP2
210| 210|
211|.endif 211|.endif
@@ -667,7 +667,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
667 |2: // Entry point for vm_cpcall below (RA = base, RB = L, PC = ftype). 667 |2: // Entry point for vm_cpcall below (RA = base, RB = L, PC = ftype).
668 | mov KBASE, L:RB->cframe // Add our C frame to cframe chain. 668 | mov KBASE, L:RB->cframe // Add our C frame to cframe chain.
669 | mov SAVE_CFRAME, KBASE // Caveat: overlaps INARG_BASE! 669 | mov SAVE_CFRAME, KBASE // Caveat: overlaps INARG_BASE!
670 | mov SAVE_PC, esp // Any value outside of bytecode is ok. 670 | mov SAVE_PC, L:RB // Any value outside of bytecode is ok.
671 | mov L:RB->cframe, esp 671 | mov L:RB->cframe, esp
672 | 672 |
673 | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table. 673 | mov DISPATCH, L:RB->glref // Setup pointer to dispatch table.
@@ -697,7 +697,7 @@ static void build_subroutines(BuildCtx *ctx, int cmov)
697 | mov RC, INARG_CP_UD 697 | mov RC, INARG_CP_UD
698 | mov RA, INARG_CP_FUNC 698 | mov RA, INARG_CP_FUNC
699 | mov BASE, INARG_CP_CALL 699 | mov BASE, INARG_CP_CALL
700 | mov SAVE_PC, esp // Any value outside of bytecode is ok. 700 | mov SAVE_PC, L:RB // Any value outside of bytecode is ok.
701 | 701 |
702 | // Caveat: INARG_P_* and INARG_CP_* overlap! 702 | // Caveat: INARG_P_* and INARG_CP_* overlap!
703 | mov KBASE, L:RB->stack // Compute -savestack(L, L->top). 703 | mov KBASE, L:RB->stack // Compute -savestack(L, L->top).
diff --git a/src/buildvm_x86.h b/src/buildvm_x86.h
index 09c77827..0d749cb9 100644
--- a/src/buildvm_x86.h
+++ b/src/buildvm_x86.h
@@ -57,11 +57,11 @@ static const unsigned char build_actionlist[12304] = {
57 209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244,17,252,233,244, 57 209,139,114,252,252,137,68,36,20,252,247,198,237,15,132,244,17,252,233,244,
58 18,248,27,85,87,86,83,131,252,236,28,190,237,252,233,244,247,248,28,255,85, 58 18,248,27,85,87,86,83,131,252,236,28,190,237,252,233,244,247,248,28,255,85,
59 87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139, 59 87,86,83,131,252,236,28,190,237,248,1,139,108,36,48,139,76,36,52,248,2,139,
60 189,233,137,124,36,52,137,100,36,24,137,165,233,139,157,233,129,195,239,248, 60 189,233,137,124,36,52,137,108,36,24,137,165,233,139,157,233,129,195,239,248,
61 3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131, 61 3,199,131,233,237,139,149,233,1,206,41,214,139,133,233,41,200,193,232,3,131,
62 192,1,139,105,252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233, 62 192,1,139,105,252,248,129,121,253,252,252,239,15,133,244,29,252,255,165,233,
63 248,30,85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,60,139,76,36,56, 63 248,30,85,87,86,83,131,252,236,28,139,108,36,48,139,68,36,60,139,76,36,56,
64 139,84,36,52,137,100,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137, 64 139,84,36,52,137,108,36,24,139,189,233,43,189,233,199,68,36,60,0,0,0,0,137,
65 124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137, 65 124,36,56,137,68,36,8,137,76,36,4,137,44,36,139,189,233,137,124,36,52,137,
66 165,233,252,255,210,133,192,15,132,244,21,255,137,193,190,237,252,233,244, 66 165,233,252,255,210,133,192,15,132,244,21,255,137,193,190,237,252,233,244,
67 2,248,25,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237, 67 2,248,25,1,209,131,230,252,248,137,213,41,252,242,199,68,193,252,252,237,