*/
static void *ppc32_abi_init(const be_abi_call_t *call, const arch_env_t *aenv, ir_graph *irg)
{
- ppc32_abi_env *env = xmalloc(sizeof(ppc32_abi_env));
+ ppc32_abi_env *env = XMALLOC(ppc32_abi_env);
(void) aenv;
env->call = call;
/**
* Generate the prologue.
- * @param self The callback object.
- * @param mem A pointer to the mem node. Update this if you define new memory.
- * @param reg_map A mapping mapping all callee_save/ignore/parameter registers to their defining nodes.
+ * @param self The callback object.
+ * @param mem A pointer to the mem node. Update this if you define new memory.
+ * @param reg_map A mapping mapping all callee_save/ignore/parameter registers to their defining nodes.
+ * @param stack_bias Points to the current stack bias, can be modified if needed.
+ *
* @return The register which shall be used as a stack frame base.
*
* All nodes which define registers in @p reg_map must keep @p reg_map current.
*/
-static const arch_register_t *ppc32_abi_prologue(void *self, ir_node **mem, pmap *reg_map)
+static const arch_register_t *ppc32_abi_prologue(void *self, ir_node **mem, pmap *reg_map, int *stack_bias)
{
ppc32_abi_env *env = (ppc32_abi_env *) self;
be_abi_call_flags_t flags = be_abi_call_get_flags(env->call);
(void) mem;
(void) reg_map;
+ (void) stack_bias;
isleaf = flags.bits.irg_is_leaf;
- if(flags.bits.try_omit_fp)
+ if (flags.bits.try_omit_fp)
return &ppc32_gp_regs[REG_R1];
else
return &ppc32_gp_regs[REG_R31];
*/
static void *ppc32_cg_init(be_irg_t *birg) {
ppc32_isa_t *isa = (ppc32_isa_t *)birg->main_env->arch_env;
- ppc32_code_gen_t *cg = xmalloc(sizeof(*cg));
+ ppc32_code_gen_t *cg = XMALLOC(ppc32_code_gen_t);
cg->impl = &ppc32_code_gen_if;
cg->irg = birg->irg;
if (inited)
return NULL;
- isa = xmalloc(sizeof(*isa));
+ isa = XMALLOC(ppc32_isa_t);
memcpy(isa, &ppc32_isa_template, sizeof(*isa));
be_emit_init(file_handle);
(void) self;
(void) irn;
/* TODO */
- assert(0);
+ panic("Unimplemented ppc32_get_allowed_execution_units()");
return NULL;
}
static const be_machine_t *ppc32_get_machine(const void *self) {
(void) self;
/* TODO */
- assert(0);
+ panic("Unimplemented ppc32_get_machine()");
return NULL;
}
ppc32_get_allowed_execution_units,
ppc32_get_machine,
ppc32_get_irg_list,
+ NULL, /* mark remat */
ppc32_parse_asm_constraint,
ppc32_is_valid_clobber
};