ppc: fixed stack fail und ein kleines clean up
[uebersetzerbau-ss10.git] / gesamt_ppc / chelper.c
index c8746eb3e941361754d3c73bc14274aba89d6c25..3f4776d735f98b7259289e9ae9685d443825c20a 100644 (file)
@@ -23,14 +23,10 @@ void func_header(char *s, int vars, int parms, int call)
 
        need_stack = (vars || parms) && call;
        if(need_stack) {
-#if 0
-               printf("\tenter $%d, $0\n", 8*(vars + parms + 2 /* fuer rax und r10 */));
-#else
                /* save the link register */
-               printf("\tmflr 0; stw 0,8(1)\n");
+               printf("\tmflr 0; stw 0,-8(1)\n");
                /* create the stack */
-               printf("\tstwu 1, -64(1)\n");
-#endif
+               printf("\tstwu 1, -80(1)\n");
        }
 }
 
@@ -42,14 +38,10 @@ char *get_func_name(void)
 void func_footer(void)
 {
        if(need_stack) {
-#if 0
-               printf("\tleave\n");
-#else
                /* remove stack frame */
-               printf("\taddi 1,1,64\n");
+               printf("\taddi 1,1,80\n");
                /* restore link register */
-               printf("\tlwz 0,8(1); mtlr 0\n");
-#endif
+               printf("\tlwz 0,-8(1); mtlr 0\n");
        }
        printf("\tblr\n\n\n");
 }
@@ -92,7 +84,7 @@ char *reg_64to8l(char *s)
 
 char *param_reg(int num)
 {
-       char *regs[] = {"3", "4", "5", "6", "7", "8", "9"};
+       char *regs[] = {"3", "4", "5", "6", "7", "8", "9", "10"};
        return regs[num];
 }