X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ir%2Fbe%2Fsparc%2Fbearch_sparc_t.h;h=b69f5c536dacb867ab4d97a82f30e9700196a102;hb=b24c359be385d38d535efe35df5a937a8ee9cc0c;hp=568f7a227cb0fb9479425bba71a8f15e7604c73f;hpb=2b3e33edc78d8f00b7d475f780a18df6fa7e8642;p=libfirm diff --git a/ir/be/sparc/bearch_sparc_t.h b/ir/be/sparc/bearch_sparc_t.h index 568f7a227..b69f5c536 100644 --- a/ir/be/sparc/bearch_sparc_t.h +++ b/ir/be/sparc/bearch_sparc_t.h @@ -32,17 +32,9 @@ typedef struct sparc_transform_env_t sparc_transform_env_t; typedef struct sparc_isa_t sparc_isa_t; -typedef struct sparc_code_gen_t { - const arch_code_generator_if_t *impl; /**< implementation */ - ir_graph *irg; /**< current irg */ - sparc_isa_t *isa; /**< the isa instance */ - bool dump; /**< set to 1 if graphs should - be dumped */ -} sparc_code_gen_t; - struct sparc_isa_t { - arch_env_t base; /**< must be derived from arch_env_t */ - sparc_code_gen_t *cg; /**< current code generator */ + arch_env_t base; /**< must be derived from arch_env_t */ + pmap *constants; }; /** @@ -57,6 +49,19 @@ struct sparc_transform_env_t { ir_mode *mode; /**< The mode of the irn */ }; -void sparc_finish_irg(sparc_code_gen_t *cg); +/** + * Sparc ABI requires some space which is always available at the top of + * the stack. It contains: + * 16*4 bytes space for spilling the register window + * 1*4 byte holding a pointer to space for agregate returns (the space is + * always reserved, regardless wether we have an agregate return + * or not) + * 6*4 bytes Space for spilling parameters 0-5. For the cases when someone + * takes the adress of a parameter. I guess this is also there so + * the implementation of va_args gets easier -> We can simply store + * param 0-5 in this spaces and then handle va_next by simply + * incrementing the stack pointer + */ +#define SPARC_MIN_STACKSIZE 92 #endif