aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/s390/linux.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/s390/linux.h')
-rw-r--r--gcc/config/s390/linux.h46
1 files changed, 12 insertions, 34 deletions
diff --git a/gcc/config/s390/linux.h b/gcc/config/s390/linux.h
index 36ae80d..0e5d179 100644
--- a/gcc/config/s390/linux.h
+++ b/gcc/config/s390/linux.h
@@ -1,7 +1,7 @@
/* Definitions for Linux for S/390.
Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
Contributed by Hartmut Penner (hpenner@de.ibm.com) and
- Ulrich Weigand (weigand@de.ibm.com).
+ Ulrich Weigand (uweigand@de.ibm.com).
This file is part of GNU CC.
@@ -138,10 +138,14 @@ Boston, MA 02111-1307, USA. */
sprintf ((OUTPUT), "%s.%d", (NAME), (LABELNO)))
-#define ASM_OUTPUT_DOUBLE_INT(FILE, VALUE) \
-do { fprintf (FILE, "%s\t", ASM_QUAD); \
- output_addr_const (FILE,(VALUE)); \
- putc ('\n',FILE); \
+#define ASM_OUTPUT_DOUBLE_INT(FILE, VALUE) \
+do { fprintf ((FILE), "%s\t", ASM_QUAD); \
+ /* Work around bug in some GNU as versions */ \
+ if (GET_CODE (VALUE) == CONST_INT && INTVAL (VALUE) < INT_MIN) \
+ fprintf ((FILE), HOST_WIDE_INT_PRINT_HEX, INTVAL (x)); \
+ else \
+ output_addr_const ((FILE), (VALUE)); \
+ putc ('\n', (FILE)); \
} while (0)
@@ -180,22 +184,14 @@ do { fprintf (FILE, "%s\t", ASM_LONG); \
/* This is how to output an element of a case-vector that is absolute. */
#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \
- fprintf (FILE, "%s %s%d\n", TARGET_64BIT?ASM_QUAD:ASM_LONG, \
+ fprintf (FILE, "%s\t%s%d\n", TARGET_64BIT?ASM_QUAD:ASM_LONG, \
LPREFIX, VALUE)
/* This is how to output an element of a case-vector that is relative. */
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- fprintf (FILE, "%s %s%d-.LT%X_%X\n" ,TARGET_64BIT?ASM_QUAD:ASM_LONG, \
- LPREFIX, VALUE, s390_function_count,s390_pool_count)
-
-/* Define the parentheses used to group arithmetic operations
- in assembler code. */
-
-#undef ASM_OPEN_PAREN
-#undef ASM_CLOSE_PAREN
-#define ASM_OPEN_PAREN ""
-#define ASM_CLOSE_PAREN ""
+ fprintf (FILE, "%s\t%s%d-%s%d\n", TARGET_64BIT?ASM_QUAD:ASM_LONG, \
+ LPREFIX, VALUE, LPREFIX, REL)
@@ -293,24 +289,6 @@ do { \
#define DBX_REGISTER_NUMBER(REGNO) (REGNO)
-/*
- * This macro generates the assembly code for function entry.
- */
-
-#define FUNCTION_PROLOGUE(FILE, LSIZE) s390_function_prologue (FILE, LSIZE)
-
-/* This macro generates the assembly code for function exit, on machines
- that need it. If FUNCTION_EPILOGUE is not defined then individual
- return instructions are generated for each return statement. Args are
- same as for FUNCTION_PROLOGUE.
-
- The function epilogue should not depend on the current stack pointer!
- It should use the frame pointer only. This is mandatory because
- of alloca; we also take advantage of it to omit stack adjustments
- before returning. */
-
-#define FUNCTION_EPILOGUE(FILE, LSIZE) s390_function_epilogue(FILE, LSIZE)
-
/* Select section for constant in constant pool.
We are in the right section.
undef for 64 bit mode (linux64.h).