X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fbearch_mips.c;h=cf90a8048e24c67a1618c0188558a125a331b9db;hb=208809bd4713035389ccb0575b2592f52db6816b;hp=e7eb08cb2cfe6650399a063872390cd835428d3f;hpb=fd1a2c6ca51ee2b6ff838581b79cf7a3c4553e36;p=libfirm diff --git a/ir/be/mips/bearch_mips.c b/ir/be/mips/bearch_mips.c index e7eb08cb2..cf90a8048 100644 --- a/ir/be/mips/bearch_mips.c +++ b/ir/be/mips/bearch_mips.c @@ -26,6 +26,7 @@ #include "../besched_t.h" #include "../be.h" #include "../beabi.h" +#include "../bemachine.h" #include "bearch_mips_t.h" @@ -227,7 +228,7 @@ static arch_irn_flags_t mips_get_flags(const void *self, const ir_node *irn) { return 0; } -static entity *mips_get_frame_entity(const void *self, const ir_node *irn) { +static ir_entity *mips_get_frame_entity(const void *self, const ir_node *irn) { if(is_mips_load_r(irn) || is_mips_store_r(irn)) { mips_attr_t *attr = get_mips_attr(irn); @@ -237,7 +238,7 @@ static entity *mips_get_frame_entity(const void *self, const ir_node *irn) { return NULL; } -static void mips_set_frame_entity(const void *self, ir_node *irn, entity *ent) { +static void mips_set_frame_entity(const void *self, ir_node *irn, ir_entity *ent) { mips_attr_t *attr = get_mips_attr(irn); assert(is_mips_load_r(irn) || is_mips_store_r(irn)); attr->stack_entity = ent; @@ -516,12 +517,13 @@ static void mips_emit_and_done(void *self) { free(cg); } -static void *mips_cg_init(const be_irg_t *birg); +static void *mips_cg_init(be_irg_t *birg); static const arch_code_generator_if_t mips_code_gen_if = { mips_cg_init, NULL, /* before abi introduce */ mips_prepare_graph, + NULL, /* spill */ mips_before_sched, /* before scheduling hook */ mips_before_ra, /* before register allocation hook */ mips_after_ra, @@ -532,7 +534,7 @@ static const arch_code_generator_if_t mips_code_gen_if = { /** * Initializes the code generator. */ -static void *mips_cg_init(const be_irg_t *birg) { +static void *mips_cg_init(be_irg_t *birg) { mips_isa_t *isa = (mips_isa_t *)birg->main_env->arch_env->isa; mips_code_gen_t *cg = xmalloc(sizeof(*cg)); @@ -796,11 +798,11 @@ static ir_type *mips_abi_get_between_type(void *self) { static ir_type *debug_between_type = NULL; static ir_type *opt_between_type = NULL; - static entity *old_fp_ent = NULL; + static ir_entity *old_fp_ent = NULL; if(env->debug && debug_between_type == NULL) { - entity *a0_ent, *a1_ent, *a2_ent, *a3_ent; - entity *ret_addr_ent; + ir_entity *a0_ent, *a1_ent, *a2_ent, *a3_ent; + ir_entity *ret_addr_ent; ir_type *ret_addr_type = new_type_primitive(new_id_from_str("return_addr"), mode_P); ir_type *old_fp_type = new_type_primitive(new_id_from_str("fp"), mode_P); ir_type *old_param_type = new_type_primitive(new_id_from_str("param"), mode_Iu); @@ -813,21 +815,21 @@ static ir_type *mips_abi_get_between_type(void *self) { old_fp_ent = new_entity(debug_between_type, new_id_from_str("old_fp"), old_fp_type); ret_addr_ent = new_entity(debug_between_type, new_id_from_str("ret_addr"), ret_addr_type); - set_entity_offset_bytes(a0_ent, 0); - set_entity_offset_bytes(a1_ent, 4); - set_entity_offset_bytes(a2_ent, 8); - set_entity_offset_bytes(a3_ent, 12); - set_entity_offset_bytes(old_fp_ent, 16); - set_entity_offset_bytes(ret_addr_ent, 20); + set_entity_offset(a0_ent, 0); + set_entity_offset(a1_ent, 4); + set_entity_offset(a2_ent, 8); + set_entity_offset(a3_ent, 12); + set_entity_offset(old_fp_ent, 16); + set_entity_offset(ret_addr_ent, 20); set_type_size_bytes(debug_between_type, 24); } else if(!env->debug && opt_between_type == NULL) { ir_type *old_fp_type = new_type_primitive(new_id_from_str("fp"), mode_P); - entity *old_fp_ent; + ir_entity *old_fp_ent; opt_between_type = new_type_class(new_id_from_str("mips_between_type")); old_fp_ent = new_entity(opt_between_type, new_id_from_str("old_fp"), old_fp_type); - set_entity_offset_bytes(old_fp_ent, 0); + set_entity_offset(old_fp_ent, 0); set_type_size_bytes(opt_between_type, 4); } @@ -930,6 +932,18 @@ static int mips_get_reg_class_alignment(const void *self, const arch_register_cl return get_mode_size_bytes(mode); } +static const be_execution_unit_t ***mips_get_allowed_execution_units(const void *self, const ir_node *irn) { + /* TODO */ + assert(0); + return NULL; +} + +static const be_machine_t *mips_get_machine(const void *self) { + /* TODO */ + assert(0); + return NULL; +} + /** * Returns the libFirm configuration parameter for this backend. */ @@ -970,8 +984,11 @@ const arch_isa_if_t mips_isa_if = { mips_get_irn_handler, mips_get_code_generator_if, mips_get_list_sched_selector, + mips_get_ilp_sched_selector, mips_get_reg_class_alignment, mips_get_libfirm_params, + mips_get_allowed_execution_units, + mips_get_machine, #ifdef WITH_LIBCORE mips_register_options #endif