From: Dave A. <ai...@us...> - 2002-10-12 11:40:31
|
Update of /cvsroot/linux-vax/tools/src/gcc/config/vax In directory usw-pr-cvs1:/tmp/cvs-serv4843 Modified Files: Tag: tools-linuxvax-dynamic-dev vax.h Log Message: DA: REGISTER_PREFIX changes from NetBSD and some #defines .. nothing that affects mkuch... Index: vax.h =================================================================== RCS file: /cvsroot/linux-vax/tools/src/gcc/config/vax/vax.h,v retrieving revision 2.17 retrieving revision 2.17.2.1 diff -u -r2.17 -r2.17.2.1 --- vax.h 8 Aug 2000 00:35:41 -0000 2.17 +++ vax.h 12 Oct 2002 11:40:24 -0000 2.17.2.1 @@ -51,13 +51,20 @@ /* Macros used in the machine description to test the flags. */ /* Nonzero if compiling code that Unix assembler can assemble. */ -#define TARGET_UNIX_ASM (target_flags & 1) +#define MASK_UNIX_ASM 1 +#define TARGET_UNIX_ASM (target_flags & MASK_UNIX_ASM) /* Nonzero if compiling with VAX-11 "C" style structure alignment */ -#define TARGET_VAXC_ALIGNMENT (target_flags & 2) +#define MASK_VAXC_ALIGNMENT 2 +#define TARGET_VAXC_ALIGNMENT (target_flags & MASK_VAXC_ALIGNMENT) /* Nonzero if compiling with `G'-format floating point */ -#define TARGET_G_FLOAT (target_flags & 4) +#define MASK_G_FLOAT 4 +#define TARGET_G_FLOAT (target_flags & MASK_G_FLOAT) + +/* Nonzero if compiling for PIC code */ +#define MASK_INDIRECT 8 +#define TARGET_INDIRECT (target_flags & MASK_INDIRECT) /* Macro to define tables used to set the flags. This is a list in braces of pairs in braces, @@ -78,7 +85,7 @@ /* Default target_flags if no switches specified. */ #ifndef TARGET_DEFAULT -#define TARGET_DEFAULT 1 +#define TARGET_DEFAULT MASK_UNIX_ASM #endif /* Target machine storage layout */ @@ -473,8 +480,12 @@ mask |= 1 << regno; \ fprintf (FILE, "\t.word 0x%x\n", mask); \ MAYBE_VMS_FUNCTION_PROLOGUE(FILE) \ - if ((size) >= 64) fprintf (FILE, "\tmovab %d(sp),sp\n", -size);\ - else if (size) fprintf (FILE, "\tsubl2 $%d,sp\n", (size)); } + if ((size) >= 64) \ + fprintf (FILE, "\tmovab %d(%ssp),%ssp\n", -size, \ + REGISTER_PREFIX, REGISTER_PREFIX); \ + else if (size) \ + fprintf (FILE, "\tsubl2 $%d,%ssp\n", \ + (size), REGISTER_PREFIX); } /* vms.h redefines this. */ #define MAYBE_VMS_FUNCTION_PROLOGUE(FILE) @@ -502,8 +513,9 @@ */ #define BLOCK_PROFILER(FILE, BLOCKNO) \ - fprintf (FILE, "\tmovpsl -(sp)\n\tmovw (sp),2(sp)\n\taddl2 $2,sp\n\taddl2 $1,LPBX2+%d\n\tbicpsw $255\n\tbispsw (sp)+\n", \ - 4 * BLOCKNO) + fprintf (FILE, "\tmovpsl -(%ssp)\n\tmovw (%ssp),2(%ssp)\n\taddl2 $2,%ssp\n\taddl2 $1,LPBX2+%d\n\tbicpsw $255\n\tbispsw (%ssp)+\n", \ + 4 * BLOCKNO, REGISTER_PREFIX, REGISTER_PREFIX, REGISTER_PREFIX, \ + REGISTER_PREFIX, REGISTER_PREFIX) /* EXIT_IGNORE_STACK should be nonzero if, when returning from a function, the stack pointer does not matter. The value is tested only in @@ -642,14 +654,20 @@ /* Nonzero if X is a hard reg that can be used as a base reg or if it is a pseudo reg. */ #define REG_OK_FOR_BASE_P(X) 1 - +#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X, 0) +/*#define GO_IF_LEGITIMATE_ADDRESS(ZMODE, XOP, LABEL) \ + do { if (legitimate_address_p(ZMODE, XOP, 0)) goto LABEL; } while (0) +*/ #else /* Nonzero if X is a hard reg that can be used as an index. */ #define REG_OK_FOR_INDEX_P(X) REGNO_OK_FOR_INDEX_P (REGNO (X)) /* Nonzero if X is a hard reg that can be used as a base reg. */ #define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P (REGNO (X)) - +#define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X, 1) +/*#define GO_IF_LEGITIMATE_ADDRESS(ZMODE, XOP, LABEL) \ + do { if (legitimate_address_p(ZMODE, XOP, 1)) goto LABEL; } while (0) +*/ #endif /* GO_IF_LEGITIMATE_ADDRESS recognizes an RTL expression @@ -1041,14 +1059,17 @@ /* Output before read-only data. */ -#define TEXT_SECTION_ASM_OP ".text" +#define TEXT_SECTION_ASM_OP "\t.text" /* Output before writable data. */ -#define DATA_SECTION_ASM_OP ".data" +#define DATA_SECTION_ASM_OP "\t.data" /* How to refer to registers in assembler output. - This sequence is indexed by compiler's hard-register-number (see above). */ + This sequence is indexed by compiler's hard-register-number (see above). + The register names will be prefixed by REGISTER_PREFIX, if any. */ + +#define REGISTER_PREFIX "" #define REGISTER_NAMES \ {"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", \ @@ -1163,13 +1184,14 @@ It need not be very fast code. */ #define ASM_OUTPUT_REG_PUSH(FILE,REGNO) \ - fprintf (FILE, "\tpushl %s\n", reg_names[REGNO]) + fprintf (FILE, "\tpushl %s%s\n", REGISTER_PREFIX, reg_names[REGNO]) /* This is how to output an insn to pop a register from the stack. It need not be very fast code. */ #define ASM_OUTPUT_REG_POP(FILE,REGNO) \ - fprintf (FILE, "\tmovl (sp)+,%s\n", reg_names[REGNO]) + fprintf (FILE, "\tmovl (%ssp)+,%s%s\n", REGISTER_PREFIX, REGISTER_PREFIX, \ + reg_names[REGNO]) /* This is how to output an element of a case-vector that is absolute. (The Vax does not use such vectors, @@ -1240,7 +1262,7 @@ #define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ do { \ fprintf (FILE, "\t.word 0x0ffc\n"); \ - fprintf (FILE, "\taddl2 $%d,4(ap)\n", DELTA); \ + fprintf (FILE, "\taddl2 $%d,4(%sap)\n", DELTA, REGISTER_PREFIX); \ fprintf (FILE, "\tjmp "); \ assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ fprintf (FILE, "+2\n"); \ @@ -1288,7 +1310,7 @@ ((CODE) == '#') #define PRINT_OPERAND(FILE, X, CODE) \ -{ extern char *rev_cond_name (); \ +{ extern const char *rev_cond_name (); \ if (CODE == '#') fputc (ASM_DOUBLE_CHAR, FILE); \ else if (CODE == 'C') \ fputs (rev_cond_name (X), FILE); \ @@ -1312,7 +1334,7 @@ else if (CODE == 'M' && GET_CODE (X) == CONST_INT) \ fprintf (FILE, "$%d", ~((1 << INTVAL (x)) - 1)); \ else if (GET_CODE (X) == REG) \ - fprintf (FILE, "%s", reg_names[REGNO (X)]); \ + fprintf (FILE, "%s%s", REGISTER_PREFIX, reg_names[REGNO (X)]); \ else if (GET_CODE (X) == MEM) \ output_address (XEXP (X, 0)); \ else if (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) == SFmode) \ |