- * Get the between type for that call.
- * @param self The callback object.
- * @return The between type of for that call.
- */
-static ir_type *sparc_get_between_type(void *self)
-{
- static ir_type *between_type = NULL;
- (void) self;
-
- if (between_type == NULL) {
- between_type = new_type_class(new_id_from_str("sparc_between_type"));
- set_type_size_bytes(between_type, 0);
- }
-
- return between_type;
-}
-
-
-/**
- * Build the prolog, return the BASE POINTER register
- */
-static const arch_register_t *sparc_abi_prologue(void *self, ir_node **mem,
- pmap *reg_map, int *stack_bias)
-{
- sparc_abi_env_t *env = self;
- ir_node *block = get_irg_start_block(env->irg);
- const arch_register_t *fp = &sparc_gp_regs[REG_FP];
- const arch_register_t *sp = &sparc_gp_regs[REG_SP];
-
- // sp
- ir_node *sp_proj = be_abi_reg_map_get(reg_map, sp);
-
-
- //ir_type *frame_type = get_irg_frame_type(env->irg);
- //frame_alloc_area(frame_type, reserved_stack_size, 1, 1);
-
- // alloc min required stack space
- // TODO: the min stacksize depends on wether this is a leaf procedure or not
- ir_node *save = new_bd_sparc_Save(NULL, block, sp_proj, *mem, SPARC_MIN_STACKSIZE);
-
- (void) reg_map;
- (void) mem;
- (void) stack_bias;
-
- *stack_bias -= SPARC_MIN_STACKSIZE;
- sp_proj = new_r_Proj(save, sp->reg_class->mode, pn_sparc_Save_stack);
- *mem = new_r_Proj(save, mode_M, pn_sparc_Save_mem);
-
- arch_set_irn_register(sp_proj, sp);
- be_abi_reg_map_set(reg_map, sp, sp_proj);
-
- // we always have a framepointer
- return fp;
-}
-
-/* Build the epilog */
-static void sparc_abi_epilogue(void *self, ir_node *bl, ir_node **mem,
- pmap *reg_map)
-{
- (void) self;
- (void) bl;
- (void) mem;
- (void) reg_map;
-}
-
-static const be_abi_callbacks_t sparc_abi_callbacks = {
- sparc_abi_init,
- free,
- sparc_get_between_type,
- sparc_abi_prologue,
- sparc_abi_epilogue,
-};
-
-static const arch_register_t *gp_param_out_regs[] = {
- &sparc_gp_regs[REG_O0],
- &sparc_gp_regs[REG_O1],
- &sparc_gp_regs[REG_O2],
- &sparc_gp_regs[REG_O3],
- &sparc_gp_regs[REG_O4],
- &sparc_gp_regs[REG_O5],
-};
-
-static const arch_register_t *gp_param_in_regs[] = {
- &sparc_gp_regs[REG_I0],
- &sparc_gp_regs[REG_I1],
- &sparc_gp_regs[REG_I2],
- &sparc_gp_regs[REG_I3],
- &sparc_gp_regs[REG_I4],
- &sparc_gp_regs[REG_I5],
-};
-
-/**
- * get register for outgoing parameters 1-6