aboutsummaryrefslogtreecommitdiff
path: root/src/buildvm_ppcspe.dasc
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildvm_ppcspe.dasc')
-rw-r--r--src/buildvm_ppcspe.dasc58
1 files changed, 31 insertions, 27 deletions
diff --git a/src/buildvm_ppcspe.dasc b/src/buildvm_ppcspe.dasc
index 5d85961b..92914f98 100644
--- a/src/buildvm_ppcspe.dasc
+++ b/src/buildvm_ppcspe.dasc
@@ -61,27 +61,29 @@
61|.define CRET2, r4 61|.define CRET2, r4
62| 62|
63|// Stack layout while in interpreter. Must match with lj_frame.h. 63|// Stack layout while in interpreter. Must match with lj_frame.h.
64|.define SAVE_LR, 180(sp) 64|.define SAVE_LR, 188(sp)
65|.define CFRAME_SPACE, 176 // Delta for sp. 65|.define CFRAME_SPACE, 184 // Delta for sp.
66|// Back chain for sp: 176(sp) <-- sp entering interpreter 66|// Back chain for sp: 184(sp) <-- sp entering interpreter
67|.define SAVE_r31, 168(sp) // 64 bit register saves. 67|.define SAVE_r31, 176(sp) // 64 bit register saves.
68|.define SAVE_r30, 160(sp) 68|.define SAVE_r30, 168(sp)
69|.define SAVE_r29, 152(sp) 69|.define SAVE_r29, 160(sp)
70|.define SAVE_r28, 144(sp) 70|.define SAVE_r28, 152(sp)
71|.define SAVE_r27, 136(sp) 71|.define SAVE_r27, 144(sp)
72|.define SAVE_r26, 128(sp) 72|.define SAVE_r26, 136(sp)
73|.define SAVE_r25, 120(sp) 73|.define SAVE_r25, 128(sp)
74|.define SAVE_r24, 112(sp) 74|.define SAVE_r24, 120(sp)
75|.define SAVE_r23, 104(sp) 75|.define SAVE_r23, 112(sp)
76|.define SAVE_r22, 96(sp) 76|.define SAVE_r22, 104(sp)
77|.define SAVE_r21, 88(sp) 77|.define SAVE_r21, 96(sp)
78|.define SAVE_r20, 80(sp) 78|.define SAVE_r20, 88(sp)
79|.define SAVE_r19, 72(sp) 79|.define SAVE_r19, 80(sp)
80|.define SAVE_r18, 64(sp) 80|.define SAVE_r18, 72(sp)
81|.define SAVE_r17, 56(sp) 81|.define SAVE_r17, 64(sp)
82|.define SAVE_r16, 48(sp) 82|.define SAVE_r16, 56(sp)
83|.define SAVE_r15, 40(sp) 83|.define SAVE_r15, 48(sp)
84|.define SAVE_r14, 32(sp) 84|.define SAVE_r14, 40(sp)
85|.define SAVE_CR, 36(sp)
86|.define UNUSED1, 32(sp)
85|.define SAVE_ERRF, 28(sp) // 32 bit C frame info. 87|.define SAVE_ERRF, 28(sp) // 32 bit C frame info.
86|.define SAVE_NRES, 24(sp) 88|.define SAVE_NRES, 24(sp)
87|.define SAVE_CFRAME, 20(sp) 89|.define SAVE_CFRAME, 20(sp)
@@ -97,16 +99,16 @@
97|.macro saveregs 99|.macro saveregs
98| stwu sp, -CFRAME_SPACE(sp) 100| stwu sp, -CFRAME_SPACE(sp)
99| save_ r14; save_ r15; save_ r16; save_ r17; save_ r18; save_ r19 101| save_ r14; save_ r15; save_ r16; save_ r17; save_ r18; save_ r19
100| mflr r0 102| mflr r0; mfcr r12
101| save_ r20; save_ r21; save_ r22; save_ r23; save_ r24; save_ r25 103| save_ r20; save_ r21; save_ r22; save_ r23; save_ r24; save_ r25
102| stw r0, SAVE_LR 104| stw r0, SAVE_LR; stw r12, SAVE_CR
103| save_ r26; save_ r27; save_ r28; save_ r29; save_ r30; save_ r31 105| save_ r26; save_ r27; save_ r28; save_ r29; save_ r30; save_ r31
104|.endmacro 106|.endmacro
105| 107|
106|.macro restoreregs 108|.macro restoreregs
107| lwz r0, SAVE_LR 109| lwz r0, SAVE_LR; lwz r12, SAVE_CR
108| rest_ r14; rest_ r15; rest_ r16; rest_ r17; rest_ r18; rest_ r19 110| rest_ r14; rest_ r15; rest_ r16; rest_ r17; rest_ r18; rest_ r19
109| mtlr r0 111| mtlr r0; mtcrf 0x38, r12
110| rest_ r20; rest_ r21; rest_ r22; rest_ r23; rest_ r24; rest_ r25 112| rest_ r20; rest_ r21; rest_ r22; rest_ r23; rest_ r24; rest_ r25
111| rest_ r26; rest_ r27; rest_ r28; rest_ r29; rest_ r30; rest_ r31 113| rest_ r26; rest_ r27; rest_ r28; rest_ r29; rest_ r30; rest_ r31
112| addi sp, sp, CFRAME_SPACE 114| addi sp, sp, CFRAME_SPACE
@@ -3656,7 +3658,8 @@ static void emit_asm_debug(BuildCtx *ctx)
3656 "\t.long .Lbegin\n" 3658 "\t.long .Lbegin\n"
3657 "\t.long %d\n" 3659 "\t.long %d\n"
3658 "\t.byte 0xe\n\t.uleb128 %d\n" 3660 "\t.byte 0xe\n\t.uleb128 %d\n"
3659 "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", 3661 "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n"
3662 "\t.byte 0x5\n\t.uleb128 70\n\t.sleb128 37\n",
3660 (int)ctx->codesz, CFRAME_SIZE); 3663 (int)ctx->codesz, CFRAME_SIZE);
3661 for (i = 14; i <= 31; i++) 3664 for (i = 14; i <= 31; i++)
3662 fprintf(ctx->fp, 3665 fprintf(ctx->fp,
@@ -3693,7 +3696,8 @@ static void emit_asm_debug(BuildCtx *ctx)
3693 "\t.long %d\n" 3696 "\t.long %d\n"
3694 "\t.uleb128 0\n" /* augmentation length */ 3697 "\t.uleb128 0\n" /* augmentation length */
3695 "\t.byte 0xe\n\t.uleb128 %d\n" 3698 "\t.byte 0xe\n\t.uleb128 %d\n"
3696 "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n", 3699 "\t.byte 0x11\n\t.uleb128 65\n\t.sleb128 -1\n"
3700 "\t.byte 0x5\n\t.uleb128 70\n\t.sleb128 37\n",
3697 (int)ctx->codesz, CFRAME_SIZE); 3701 (int)ctx->codesz, CFRAME_SIZE);
3698 for (i = 14; i <= 31; i++) 3702 for (i = 14; i <= 31; i++)
3699 fprintf(ctx->fp, 3703 fprintf(ctx->fp,