Mercurial > hg > CbC > old > device
diff mc-code-arm.c @ 935:7672a37e7545 default tip
Raspbery PI ARM support begin
author | kono |
---|---|
date | Sat, 24 Dec 2016 03:02:57 +0000 |
parents | 35b339b36c88 |
children |
line wrap: on
line diff
--- a/mc-code-arm.c Sat Dec 24 11:00:47 2016 +0900 +++ b/mc-code-arm.c Sat Dec 24 03:02:57 2016 +0000 @@ -227,15 +227,21 @@ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "lr", "ip", "fp", "sp", "pc", "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7" + // "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7", + // "s8", "s9", "s10", "s11", "s12", "s13", "s14", "s15", + "s0", "s2", "s4", "s6", "s8", "s10","s12", "s14", + "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", }; #define register_name(i) reg_name[i] #define fregister_name(i) reg_name[i] +#define dregister_name(i) reg_name[i+8] #define lregister_name_low(i) reg_name[regv_l(i)] #define lregister_name_high(i) reg_name[regv_h(i)] char *rn(int i) { return register_name(i); } char *fn(int i) { return fregister_name(i); } +char *dn(int i) { return dregister_name(i+8); } char *lln(int i) { return lregister_name_low(i); } char *lhn(int i) { return lregister_name_high(i); } int ll(int i) { return regv_l(i); } @@ -3485,14 +3491,14 @@ set_freg(RET_FREGISTER,1); #endif printf("\tmov\t%s, %s\n",register_name( - cadr(get_input_register_var(1,0,1,0)); + cadr(get_input_register_var(1,0,0)) ),register_name(REG_fp)); } else if (cadr(fnptr->ty)==DOUBLE) { #if FLOAT_CODE creg = lreg = cadr(get_input_dregister_var(0,0,1,1)); set_dreg(RET_DREGISTER,1); printf("\tmov\t%s, %s\n",register_name( - cadr(get_input_register_var(2,0,1,0)); + cadr(get_input_register_var(2,0,0)) ),register_name(REG_fp)); #endif } else if (cadr(fnptr->ty)>0&&( @@ -3504,7 +3510,7 @@ printf("\tsub\tr1, r2, fp\n"); printf("\tldr\tr0, [fp, #%d]\n",(my_func_args-1)*SIZE_OF_INT); printf("\tmov\t%s, %s\n",register_name( - cadr(get_input_register_var(1,0,1,0)); + cadr(get_input_register_var(1,0,0)) ),register_name(REG_fp)); // emit_copy(6,3,sz,0,1,1); } else if (cadr(fnptr->ty)!=VOID) { @@ -3512,7 +3518,7 @@ if (creg!=RET_REGISTER) set_ireg(RET_REGISTER,1); printf("\tmov\t%s, %s\n",register_name( - cadr(get_input_register_var(1,0,1,0)); + cadr(get_input_register_var(1,0,1)) ),register_name(REG_fp)); } code_unfix_frame_pointer(); @@ -3681,8 +3687,8 @@ return lb; } -extern void -emit_string(char *s,int t,long len) +extern void +emit_string(char *s,int t,int len) { t = type_value(t); if (car(t)==ARRAY &&