]> git.hungrycats.org Git - linux/commitdiff
[PATCH] s390: gcc 3.3 adaptions.
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 24 Feb 2003 02:46:18 +0000 (18:46 -0800)
committerLinus Torvalds <torvalds@home.transmeta.com>
Mon, 24 Feb 2003 02:46:18 +0000 (18:46 -0800)
updates for compiling with gcc-3.3pre

- add -finline-limit=10000 to make it build
- drop .eh_frame elf section from vmlinux
- fix common warnings inn asm headers
- make dasd compile
- Don't warn about signed/unsigned comparisions
- fix inline syscall macros

arch/s390/Makefile
arch/s390/vmlinux.lds.S
arch/s390x/Makefile
arch/s390x/vmlinux.lds.S
drivers/s390/block/dasd_eckd.h
include/asm-s390/bitops.h
include/asm-s390/idals.h
include/asm-s390/unistd.h
include/asm-s390x/bitops.h
include/asm-s390x/idals.h
include/asm-s390x/unistd.h

index 8985f66f3ddfcf03b13012097ef70db8084e74a3..454b8c79d105d1cec95ecb5ffa38698f60d7b289 100644 (file)
@@ -18,7 +18,7 @@ OBJCOPYFLAGS  := -O binary
 LDFLAGS_vmlinux := -e start
 LDFLAGS_BLOB   := --format binary --oformat elf32-s390
 
-CFLAGS += -pipe -fno-strength-reduce
+CFLAGS += -pipe -fno-strength-reduce -finline-limit=10000 -Wno-sign-compare
 
 head-y := arch/$(ARCH)/kernel/head.o arch/$(ARCH)/kernel/init_task.o
 
index a356511f82ccde6931e238ed8b3f0e16265d3d2d..1c16df060e9b84933762658d81e820bd908c3f56 100644 (file)
@@ -64,6 +64,9 @@ SECTIONS
   __setup_start = .;
   .init.setup : { *(.init.setup) }
   __setup_end = .;
+  __start___param = .;
+  __param : { *(__param) }
+  __stop___param = .;
   __initcall_start = .;
   .initcall.init : {
        *(.initcall1.init) 
@@ -98,6 +101,7 @@ SECTIONS
        *(.exit.text)
        *(.exit.data)
        *(.exitcall.exit)
+       *(.eh_frame)
        }
 
   /* Stabs debugging sections.  */
index 66f1b321f876deaa83484ebc84bdab67a397f6d7..0b07f6ece283611e66f7d51aeba28d3076eeb3fe 100644 (file)
@@ -19,7 +19,7 @@ LDFLAGS_vmlinux := -e start
 MODFLAGS += -fpic -D__PIC__
 LDFLAGS_BLOB   := --format binary --oformat elf64-s390
 
-CFLAGS += -pipe -fno-strength-reduce
+CFLAGS += -pipe -fno-strength-reduce -finline-limit=10000 -Wno-sign-compare
 
 head-y := arch/$(ARCH)/kernel/head.o arch/$(ARCH)/kernel/init_task.o
 
index a3d243e3fa5a60ad77b2a99d39a520e066a1cd0c..df4910a4c7fa3f4d47b4839ee96b5ce32b0cf4a3 100644 (file)
@@ -64,6 +64,9 @@ SECTIONS
   __setup_start = .;
   .init.setup : { *(.init.setup) }
   __setup_end = .;
+  __start___param = .;
+  __param : { *(__param) }
+  __stop___param = .;
   __initcall_start = .;
   .initcall.init : {
        *(.initcall1.init) 
@@ -98,6 +101,7 @@ SECTIONS
        *(.exit.text)
        *(.exit.data)
        *(.exitcall.exit)
+       *(.eh_frame)
        }
 
   /* Stabs debugging sections.  */
index 16e74cd2f9eb708166f00d58a3f3efc4d0535002..bfea8b41f2a70e6eac809973dc9c38e195a22fc2 100644 (file)
@@ -5,7 +5,7 @@
  * Bugreports.to..: <Linux390@de.ibm.com>
  * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
  *
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
  *
  * History of changes 
  * 
@@ -109,7 +109,7 @@ typedef struct DE_eckd_data_t {
                unsigned char cfw:1;    /* Cache fast write */
                unsigned char dfw:1;    /* DASD fast write */
        } __attribute__ ((packed)) attributes;
-       __u16 short blk_size;   /* Blocksize */
+       __u16 blk_size;         /* Blocksize */
        __u16 fast_write_id;
        __u8 ga_additional;     /* Global Attributes Additional */
        __u8 ga_extended;       /* Global Attributes Extended   */
index 7987f0c9ccad5ee18eeacbe3b4504a51388edf52..c0ffd0a5501b734ae55ec9f7cef7adb36210b3c2 100644 (file)
@@ -469,7 +469,7 @@ test_and_change_bit_simple(int nr, volatile unsigned long *ptr)
  * This routine doesn't need to be atomic.
  */
 
-static inline int __test_bit(int nr, volatile unsigned long *ptr)
+static inline int __test_bit(int nr, const volatile unsigned long *ptr)
 {
        unsigned long addr;
        unsigned char ch;
@@ -480,7 +480,7 @@ static inline int __test_bit(int nr, volatile unsigned long *ptr)
 }
 
 static inline int 
-__constant_test_bit(int nr, volatile unsigned long * addr) {
+__constant_test_bit(int nr, const volatile unsigned long * addr) {
     return (((volatile char *) addr)[(nr>>3)^3] & (1<<(nr&7))) != 0;
 }
 
index 3cb1d7da005686cf6861e93b5849433f788bd99a..5be57898cba961cd7f80a0fec00dccc2755fb48e 100644 (file)
@@ -191,10 +191,10 @@ static inline int
 __idal_buffer_is_needed(struct idal_buffer *ib)
 {
 #ifdef CONFIG_ARCH_S390X
-       return ib->size > (4096 << ib->page_order) ||
+       return ib->size > (4096ul << ib->page_order) ||
                idal_is_needed(ib->data[0], ib->size);
 #else
-       return ib->size > (4096 << ib->page_order);
+       return ib->size > (4096ul << ib->page_order);
 #endif
 }
 
index 587b0624b398725eba2b5d112b86a7e258ee62b2..936d851c377b1e2330eaf10a070831852daba80b 100644 (file)
@@ -266,27 +266,29 @@ do {                                                         \
 
 #define _syscall0(type,name)                                 \
 type name(void) {                                            \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name)                          \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
 #define _syscall1(type,name,type1,arg1)                      \
 type name(type1 arg1) {                                      \
         register type1 __arg1 asm("2") = arg1;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -294,15 +296,16 @@ type name(type1 arg1) {                                      \
 type name(type1 arg1, type2 arg2) {                          \
         register type1 __arg1 asm("2") = arg1;               \
         register type2 __arg2 asm("3") = arg2;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -311,16 +314,17 @@ type name(type1 arg1, type2 arg2, type3 arg3) {              \
         register type1 __arg1 asm("2") = arg1;               \
         register type2 __arg2 asm("3") = arg2;               \
         register type3 __arg3 asm("4") = arg3;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
                   "d" (__arg3)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -331,17 +335,18 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {  \
         register type2 __arg2 asm("3") = arg2;               \
         register type3 __arg3 asm("4") = arg3;               \
         register type4 __arg4 asm("5") = arg4;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
                   "d" (__arg3),                              \
                   "d" (__arg4)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -354,11 +359,11 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
         register type3 __arg3 asm("4") = arg3;               \
         register type4 __arg4 asm("5") = arg4;               \
         register type5 __arg5 asm("6") = arg5;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lr  %0,2"                               \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
@@ -366,6 +371,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
                   "d" (__arg4),                              \
                   "d" (__arg5)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
index ca20e79458a0d90d261800b92e62b25c289ef0c6..5a07390ff3a491af6df5c92569c9f6fffc4bd7a1 100644 (file)
@@ -473,7 +473,7 @@ test_and_change_bit_simple(unsigned long nr, volatile unsigned long *ptr)
  * This routine doesn't need to be atomic.
  */
 
-static inline int __test_bit(unsigned long nr, volatile unsigned long *ptr)
+static inline int __test_bit(unsigned long nr, const volatile unsigned long *ptr)
 {
        unsigned long addr;
        unsigned char ch;
@@ -484,7 +484,7 @@ static inline int __test_bit(unsigned long nr, volatile unsigned long *ptr)
 }
 
 static inline int 
-__constant_test_bit(unsigned long nr, volatile unsigned long *addr) {
+__constant_test_bit(unsigned long nr, const volatile unsigned long *addr) {
     return (((volatile char *) addr)[(nr>>3)^7] & (1<<(nr&7))) != 0;
 }
 
index 3cb1d7da005686cf6861e93b5849433f788bd99a..5be57898cba961cd7f80a0fec00dccc2755fb48e 100644 (file)
@@ -191,10 +191,10 @@ static inline int
 __idal_buffer_is_needed(struct idal_buffer *ib)
 {
 #ifdef CONFIG_ARCH_S390X
-       return ib->size > (4096 << ib->page_order) ||
+       return ib->size > (4096ul << ib->page_order) ||
                idal_is_needed(ib->data[0], ib->size);
 #else
-       return ib->size > (4096 << ib->page_order);
+       return ib->size > (4096ul << ib->page_order);
 #endif
 }
 
index ade5ad05391b98a444f2dd0a1ea65ed77648b85d..7d082721a1a226e15d06d7e4c8e8234097ca1ae1 100644 (file)
@@ -233,27 +233,29 @@ do {                                                         \
 
 #define _syscall0(type,name)                                 \
 type name(void) {                                            \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name)                          \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
 #define _syscall1(type,name,type1,arg1)                      \
 type name(type1 arg1) {                                      \
         register type1 __arg1 asm("2") = arg1;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -261,15 +263,16 @@ type name(type1 arg1) {                                      \
 type name(type1 arg1, type2 arg2) {                          \
         register type1 __arg1 asm("2") = arg1;               \
         register type2 __arg2 asm("3") = arg2;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -278,16 +281,17 @@ type name(type1 arg1, type2 arg2, type3 arg3) {              \
         register type1 __arg1 asm("2") = arg1;               \
         register type2 __arg2 asm("3") = arg2;               \
         register type3 __arg3 asm("4") = arg3;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
                   "d" (__arg3)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -298,17 +302,18 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) {  \
         register type2 __arg2 asm("3") = arg2;               \
         register type3 __arg3 asm("4") = arg3;               \
         register type4 __arg4 asm("5") = arg4;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
                   "d" (__arg3),                              \
                   "d" (__arg4)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }
 
@@ -321,11 +326,11 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
         register type3 __arg3 asm("4") = arg3;               \
         register type4 __arg4 asm("5") = arg4;               \
         register type5 __arg5 asm("6") = arg5;               \
-        register long __res asm("2");                        \
+        register long __svcres asm("2");                     \
+        long __res;                                          \
         __asm__ __volatile__ (                               \
                 "    svc %b1\n"                              \
-                "    lgr  %0,2"                              \
-                : "=d" (__res)                               \
+                : "=d" (__svcres)                            \
                 : "i" (__NR_##name),                         \
                   "0" (__arg1),                              \
                   "d" (__arg2),                              \
@@ -333,6 +338,7 @@ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,    \
                   "d" (__arg4),                              \
                   "d" (__arg5)                               \
                 : _svc_clobber );                            \
+       __res = __svcres;                                    \
         __syscall_return(type,__res);                        \
 }