diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/buildvm_x86.dasc | 68 | ||||
| -rw-r--r-- | src/buildvm_x86.h | 4 |
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, |
