X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Farm%2Farm_cconv.h;h=b952b527f95c8e38937fec5bd7a596711d373b3e;hb=4eccff9cdc2a5e114606e8b83745f1339c83c932;hp=1624341aa6eb870867a3e7e7b25bb1cd05b98eca;hpb=d3b7b2aa0a23e144f7e1bf5566eec1bc17e2bf12;p=libfirm diff --git a/ir/be/arm/arm_cconv.h b/ir/be/arm/arm_cconv.h index 1624341aa..b952b527f 100644 --- a/ir/be/arm/arm_cconv.h +++ b/ir/be/arm/arm_cconv.h @@ -31,37 +31,51 @@ #include "gen_arm_regalloc_if.h" static const arch_register_t *const callee_saves[] = { - &arm_gp_regs[REG_R4], - &arm_gp_regs[REG_R5], - &arm_gp_regs[REG_R6], - &arm_gp_regs[REG_R7], - &arm_gp_regs[REG_R8], - &arm_gp_regs[REG_R9], - &arm_gp_regs[REG_R10], - &arm_gp_regs[REG_R11], - &arm_gp_regs[REG_LR], + &arm_registers[REG_R4], + &arm_registers[REG_R5], + &arm_registers[REG_R6], + &arm_registers[REG_R7], + &arm_registers[REG_R8], + &arm_registers[REG_R9], + &arm_registers[REG_R10], + &arm_registers[REG_R11], + &arm_registers[REG_LR], }; static const arch_register_t *const caller_saves[] = { - &arm_gp_regs[REG_R0], - &arm_gp_regs[REG_R1], - &arm_gp_regs[REG_R2], - &arm_gp_regs[REG_R3], - &arm_gp_regs[REG_LR] + &arm_registers[REG_R0], + &arm_registers[REG_R1], + &arm_registers[REG_R2], + &arm_registers[REG_R3], + &arm_registers[REG_LR], + + &arm_registers[REG_F0], + &arm_registers[REG_F1], + &arm_registers[REG_F2], + &arm_registers[REG_F3], + &arm_registers[REG_F4], + &arm_registers[REG_F5], + &arm_registers[REG_F6], + &arm_registers[REG_F7], }; static const arch_register_t* const param_regs[] = { - &arm_gp_regs[REG_R0], - &arm_gp_regs[REG_R1], - &arm_gp_regs[REG_R2], - &arm_gp_regs[REG_R3] + &arm_registers[REG_R0], + &arm_registers[REG_R1], + &arm_registers[REG_R2], + &arm_registers[REG_R3] }; static const arch_register_t* const result_regs[] = { - &arm_gp_regs[REG_R0], - &arm_gp_regs[REG_R1], - &arm_gp_regs[REG_R2], - &arm_gp_regs[REG_R3] + &arm_registers[REG_R0], + &arm_registers[REG_R1], + &arm_registers[REG_R2], + &arm_registers[REG_R3] +}; + +static const arch_register_t* const float_result_regs[] = { + &arm_registers[REG_F0], + &arm_registers[REG_F1] }; /** information about a single parameter or result */ @@ -88,11 +102,11 @@ typedef struct calling_convention_t * Decides what goes to register or to stack and what stack offsets/ * datatypes are used. */ -calling_convention_t *decide_calling_convention(ir_type *function_type); +calling_convention_t *arm_decide_calling_convention(ir_type *function_type); /** * free memory used by a calling_convention_t */ -void free_calling_convention(calling_convention_t *cconv); +void arm_free_calling_convention(calling_convention_t *cconv); #endif