Subject: xgcc patch From: carlk@gte.net (Carl Kreider) Date: 1997/12/19 Message-ID: <67cioh$ff6$1@gte2.gte.net> Newsgroups: comp.os.os9 [More Headers] I have solved the parameter passing problem with Walter Hunt's OS9 cross compiler from rtsi. I'm not clever; I cribbed the solution from Stephan Paschedag's OS9 port sources. A couple problems remain, but my application is up and running compiled on my linux box. Since this problem has been discussed here, I thought I would post the diffs for others who may be interested. --- m68k.h.old Sun Dec 14 13:34:12 1997 +++ m68k.h Sun Dec 14 14:01:25 1997 @@ -866,18 +866,29 @@ It exists only to test register calling conventions. */ #define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ -((TARGET_REGPARM && (CUM) < 8) ? gen_rtx (REG, (MODE), (CUM) / 4) : 0) +(((TARGET_REGPARM) && \ + (!(TYPE) || (TREE_CODE ((TYPE)) != RECORD_TYPE && \ + TREE_CODE ((TYPE)) != UNION_TYPE))) \ + ? (8 < (CUM) + ((((MODE) == BLKmode \ + ? int_size_in_bytes (TYPE) \ + : GET_MODE_SIZE (MODE)) + 3) & ~3) \ + ? 0 \ + : gen_rtx (REG, (MODE), (CUM)/4)) \ + : 0) + +/*((TARGET_REGPARM && (CUM) < 8) ? gen_rtx (REG, (MODE), (CUM) / 4) : 0)*/ /* For an arg passed partly in registers and partly in memory, this is the number of registers used. For args passed entirely in registers or entirely in memory, zero. */ #define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \ -((TARGET_REGPARM && (CUM) < 8 \ + 0 +/*((TARGET_REGPARM && (CUM) < 8 \ && 8 < ((CUM) + ((MODE) == BLKmode \ ? int_size_in_bytes (TYPE) \ : GET_MODE_SIZE (MODE)))) \ - ? 2 - (CUM) / 4 : 0) + ? 2 - (CUM) / 4 : 0) */ /* Generate the assembly code for function entry. */ #define FUNCTION_PROLOGUE(FILE, SIZE) output_function_prologue(FILE, SIZE) -- Carl Kreider aka ckreider@acm.org ckreider@gte.net carlk@syscon-intl.com