diff options
Diffstat (limited to 'src/buildvm_ppc.dasc')
-rw-r--r-- | src/buildvm_ppc.dasc | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/buildvm_ppc.dasc b/src/buildvm_ppc.dasc index 0e83e305..c2363d97 100644 --- a/src/buildvm_ppc.dasc +++ b/src/buildvm_ppc.dasc | |||
@@ -16,6 +16,62 @@ | |||
16 | | | 16 | | |
17 | |//----------------------------------------------------------------------- | 17 | |//----------------------------------------------------------------------- |
18 | | | 18 | | |
19 | |// Stack layout while in interpreter. Must match with lj_frame.h. | ||
20 | |.if SPE | ||
21 | |.define SAVE_LR, 180(sp) | ||
22 | |.define CFRAME_SPACE, 176 // Delta for sp. | ||
23 | |// Back chain for sp: 176(sp) <-- sp entering interpreter | ||
24 | |.define SAVE_r31, 168(sp) // 64 bit register saves. | ||
25 | |.define SAVE_r30, 160(sp) | ||
26 | |.define SAVE_r29, 152(sp) | ||
27 | |.define SAVE_r28, 144(sp) | ||
28 | |.define SAVE_r27, 136(sp) | ||
29 | |.define SAVE_r26, 128(sp) | ||
30 | |.define SAVE_r25, 120(sp) | ||
31 | |.define SAVE_r24, 112(sp) | ||
32 | |.define SAVE_r23, 104(sp) | ||
33 | |.define SAVE_r22, 96(sp) | ||
34 | |.define SAVE_r21, 88(sp) | ||
35 | |.define SAVE_r20, 80(sp) | ||
36 | |.define SAVE_r19, 72(sp) | ||
37 | |.define SAVE_r18, 64(sp) | ||
38 | |.define SAVE_r17, 56(sp) | ||
39 | |.define SAVE_r16, 48(sp) | ||
40 | |.define SAVE_r15, 40(sp) | ||
41 | |.define SAVE_r14, 32(sp) | ||
42 | |.define SAVE_ERRF, 28(sp) // 32 bit C frame info. | ||
43 | |.define SAVE_NRES, 24(sp) | ||
44 | |.define SAVE_CFRAME, 20(sp) | ||
45 | |.define SAVE_L, 16(sp) | ||
46 | |.define SAVE_PC, 12(sp) | ||
47 | |.define SAVE_MULTRES, 8(sp) | ||
48 | |// Next frame lr: 4(sp) | ||
49 | |// Back chain for sp: 0(sp) <-- sp while in interpreter | ||
50 | | | ||
51 | |.macro save_, reg; evstdd reg, SAVE_..reg; .endmacro | ||
52 | |.macro rest_, reg; evldd reg, SAVE_..reg; .endmacro | ||
53 | |.endif | ||
54 | | | ||
55 | |.macro saveregs | ||
56 | | stwu sp, -CFRAME_SPACE(sp) | ||
57 | | save_ r14; save_ r15; save_ r16; save_ r17; save_ r18; save_ r19 | ||
58 | | mflr r0 | ||
59 | | save_ r20; save_ r21; save_ r22; save_ r23; save_ r24; save_ r25 | ||
60 | | stw r0, SAVE_LR | ||
61 | | save_ r26; save_ r27; save_ r28; save_ r29; save_ r30; save_ r31 | ||
62 | |.endmacro | ||
63 | | | ||
64 | |.macro restoreregs | ||
65 | | lwz r0, SAVE_LR | ||
66 | | rest_ r14; rest_ r15; rest_ r16; rest_ r17; rest_ r18; rest_ r19 | ||
67 | | mtlr r0 | ||
68 | | rest_ r20; rest_ r21; rest_ r22; rest_ r23; rest_ r24; rest_ r25 | ||
69 | | rest_ r26; rest_ r27; rest_ r28; rest_ r29; rest_ r30; rest_ r31 | ||
70 | | addi sp, sp, CFRAME_SPACE | ||
71 | |.endmacro | ||
72 | | | ||
73 | |//----------------------------------------------------------------------- | ||
74 | | | ||
19 | |// Trap for not-yet-implemented parts. | 75 | |// Trap for not-yet-implemented parts. |
20 | |.macro NYI; tw 4, sp, sp; .endmacro | 76 | |.macro NYI; tw 4, sp, sp; .endmacro |
21 | | | 77 | | |