From 272880ecea5a9de588fd8d1d82fb7285baa6d82d Mon Sep 17 00:00:00 2001 From: richard Date: Mon, 2 Aug 1999 20:26:02 +0000 Subject: [PATCH] Unixware 2.1.3 config git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@4688 72102866-910b-0410-8b05-ffd578937521 --- Source/mframe/i386/sysv4.2uw2.1.3 | 51 +++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Source/mframe/i386/sysv4.2uw2.1.3 diff --git a/Source/mframe/i386/sysv4.2uw2.1.3 b/Source/mframe/i386/sysv4.2uw2.1.3 new file mode 100644 index 000000000..9d28d1512 --- /dev/null +++ b/Source/mframe/i386/sysv4.2uw2.1.3 @@ -0,0 +1,51 @@ +/* See ../README for copyright */ + +#define MFRAME_STACK_STRUCT 0 +#define MFRAME_STRUCT_BYREF 0 +#define MFRAME_SMALL_STRUCT 0 +#define MFRAME_ARGS_SIZE 8 +#define MFRAME_RESULT_SIZE 116 + +#define MFRAME_GET_STRUCT_ADDR(ARGS, TYPES) \ +((*(TYPES)==_C_STRUCT_B || *(TYPES)==_C_UNION_B || *(TYPES)==_C_ARY_B) ? \ + *(void**)(ARGS)->arg_ptr : (void*)0) + +#define MFRAME_SET_STRUCT_ADDR(ARGS, TYPES, ADDR) \ +({if (*(TYPES)==_C_STRUCT_B || *(TYPES)==_C_UNION_B || *(TYPES)==_C_ARY_B) \ + *(void**)(ARGS)->arg_ptr = (ADDR);}) + +#define MFRAME_ARGS int + +#define MFRAME_INIT_ARGS(CUM, RTYPE) \ +((CUM) = (*(RTYPE)==_C_STRUCT_B || *(RTYPE)==_C_UNION_B || \ + *(RTYPE)==_C_ARY_B) ? sizeof(void*) : 0) + +#define MFRAME_ARG_ENCODING(CUM, TYPE, STACK, DEST) \ +({ \ + const char* type = (TYPE); \ + int align = objc_alignof_type(type); \ + int size = objc_sizeof_type(type); \ +\ + (CUM) = ROUND((CUM), align); \ + (TYPE) = objc_skip_typespec(type); \ + sprintf((DEST), "%.*s%d", (TYPE)-type, type, (CUM)); \ + if (*(TYPE) == '+') \ + { \ + (TYPE)++; \ + } \ + while (isdigit(*(TYPE))) \ + { \ + (TYPE)++; \ + } \ + (DEST)=&(DEST)[strlen(DEST)]; \ + if ((*type==_C_STRUCT_B||*type==_C_UNION_B||*type==_C_ARY_B)&&size>2) \ + { \ + (STACK) = (CUM) + ROUND(size, align); \ + } \ + else \ + { \ + (STACK) = (CUM) + size; \ + } \ + (CUM) += ROUND(size, sizeof(void*)); \ +}) +