projects
/
uebersetzerbau-ss10.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ppc: fixed stack fail und ein kleines clean up
[uebersetzerbau-ss10.git]
/
gesamt_ppc
/
chelper.c
diff --git
a/gesamt_ppc/chelper.c
b/gesamt_ppc/chelper.c
index c8746eb3e941361754d3c73bc14274aba89d6c25..3f4776d735f98b7259289e9ae9685d443825c20a 100644
(file)
--- a/
gesamt_ppc/chelper.c
+++ b/
gesamt_ppc/chelper.c
@@
-23,14
+23,10
@@
void func_header(char *s, int vars, int parms, int call)
need_stack = (vars || parms) && call;
if(need_stack) {
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 */
/* save the link register */
- printf("\tmflr 0; stw 0,8(1)\n");
+ printf("\tmflr 0; stw 0,
-
8(1)\n");
/* create the stack */
/* 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) {
void func_footer(void)
{
if(need_stack) {
-#if 0
- printf("\tleave\n");
-#else
/* remove stack frame */
/* remove stack frame */
- printf("\taddi 1,1,
64
\n");
+ printf("\taddi 1,1,
80
\n");
/* restore link register */
/* 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");
}
}
printf("\tblr\n\n\n");
}
@@
-92,7
+84,7
@@
char *reg_64to8l(char *s)
char *param_reg(int num)
{
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];
}
return regs[num];
}