Commit fc6fcffc authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Linus Torvalds

[PATCH] s390: gcc4 compile fixes.

Make s390 compile and work with gcc4.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 43816472
...@@ -32,11 +32,11 @@ static k_handler_fn K_HANDLERS; ...@@ -32,11 +32,11 @@ static k_handler_fn K_HANDLERS;
static k_handler_fn *k_handler[16] = { K_HANDLERS }; static k_handler_fn *k_handler[16] = { K_HANDLERS };
/* maximum values each key_handler can handle */ /* maximum values each key_handler can handle */
static const int max_vals[] = { static const int kbd_max_vals[] = {
255, ARRAY_SIZE(func_table) - 1, NR_FN_HANDLER - 1, 0, 255, ARRAY_SIZE(func_table) - 1, NR_FN_HANDLER - 1, 0,
NR_DEAD - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 NR_DEAD - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0
}; };
static const int NR_TYPES = ARRAY_SIZE(max_vals); static const int KBD_NR_TYPES = ARRAY_SIZE(kbd_max_vals);
static unsigned char ret_diacr[NR_DEAD] = { static unsigned char ret_diacr[NR_DEAD] = {
'`', '\'', '^', '~', '"', ',' '`', '\'', '^', '~', '"', ','
...@@ -360,7 +360,7 @@ do_kdsk_ioctl(struct kbd_data *kbd, struct kbentry __user *user_kbe, ...@@ -360,7 +360,7 @@ do_kdsk_ioctl(struct kbd_data *kbd, struct kbentry __user *user_kbe,
key_map = kbd->key_maps[tmp.kb_table]; key_map = kbd->key_maps[tmp.kb_table];
if (key_map) { if (key_map) {
val = U(key_map[tmp.kb_index]); val = U(key_map[tmp.kb_index]);
if (KTYP(val) >= NR_TYPES) if (KTYP(val) >= KBD_NR_TYPES)
val = K_HOLE; val = K_HOLE;
} else } else
val = (tmp.kb_index ? K_HOLE : K_NOSUCHMAP); val = (tmp.kb_index ? K_HOLE : K_NOSUCHMAP);
...@@ -378,9 +378,9 @@ do_kdsk_ioctl(struct kbd_data *kbd, struct kbentry __user *user_kbe, ...@@ -378,9 +378,9 @@ do_kdsk_ioctl(struct kbd_data *kbd, struct kbentry __user *user_kbe,
break; break;
} }
if (KTYP(tmp.kb_value) >= NR_TYPES) if (KTYP(tmp.kb_value) >= KBD_NR_TYPES)
return -EINVAL; return -EINVAL;
if (KVAL(tmp.kb_value) > max_vals[KTYP(tmp.kb_value)]) if (KVAL(tmp.kb_value) > kbd_max_vals[KTYP(tmp.kb_value)])
return -EINVAL; return -EINVAL;
if (!(key_map = kbd->key_maps[tmp.kb_table])) { if (!(key_map = kbd->key_maps[tmp.kb_table])) {
......
...@@ -18,8 +18,6 @@ struct channel_path { ...@@ -18,8 +18,6 @@ struct channel_path {
struct device dev; struct device dev;
}; };
extern struct channel_path *chps[];
extern void s390_process_css( void ); extern void s390_process_css( void );
extern void chsc_validate_chpids(struct subchannel *); extern void chsc_validate_chpids(struct subchannel *);
extern void chpid_is_actually_online(int); extern void chpid_is_actually_online(int);
......
...@@ -335,19 +335,23 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -335,19 +335,23 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
__asm__ __volatile__("lpswe 0(%0)" : : "a" (&psw), "m" (psw) : "cc" ); __asm__ __volatile__("lpswe 0(%0)" : : "a" (&psw), "m" (psw) : "cc" );
#define __ctl_load(array, low, high) ({ \ #define __ctl_load(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
" bras 1,0f\n" \ " bras 1,0f\n" \
" lctlg 0,0,0(%0)\n" \ " lctlg 0,0,0(%0)\n" \
"0: ex %1,0(1)" \ "0: ex %1,0(1)" \
: : "a" (&array), "a" (((low)<<4)+(high)) : "1" ); \ : : "a" (&array), "a" (((low)<<4)+(high)), \
"m" (*(addrtype *)(array)) : "1" ); \
}) })
#define __ctl_store(array, low, high) ({ \ #define __ctl_store(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
" bras 1,0f\n" \ " bras 1,0f\n" \
" stctg 0,0,0(%1)\n" \ " stctg 0,0,0(%1)\n" \
"0: ex %2,0(1)" \ "0: ex %2,0(1)" \
: "=m" (array) : "a" (&array), "a" (((low)<<4)+(high)) : "1" ); \ : "=m" (*(addrtype *)(array)) \
: "a" (&array), "a" (((low)<<4)+(high)) : "1" ); \
}) })
#define __ctl_set_bit(cr, bit) ({ \ #define __ctl_set_bit(cr, bit) ({ \
...@@ -390,19 +394,23 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) ...@@ -390,19 +394,23 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
__asm__ __volatile__("lpsw 0(%0)" : : "a" (&psw) : "cc" ); __asm__ __volatile__("lpsw 0(%0)" : : "a" (&psw) : "cc" );
#define __ctl_load(array, low, high) ({ \ #define __ctl_load(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
" bras 1,0f\n" \ " bras 1,0f\n" \
" lctl 0,0,0(%0)\n" \ " lctl 0,0,0(%0)\n" \
"0: ex %1,0(1)" \ "0: ex %1,0(1)" \
: : "a" (&array), "a" (((low)<<4)+(high)) : "1" ); \ : : "a" (&array), "a" (((low)<<4)+(high)), \
"m" (*(addrtype *)(array)) : "1" ); \
}) })
#define __ctl_store(array, low, high) ({ \ #define __ctl_store(array, low, high) ({ \
typedef struct { char _[sizeof(array)]; } addrtype; \
__asm__ __volatile__ ( \ __asm__ __volatile__ ( \
" bras 1,0f\n" \ " bras 1,0f\n" \
" stctl 0,0,0(%1)\n" \ " stctl 0,0,0(%1)\n" \
"0: ex %2,0(1)" \ "0: ex %2,0(1)" \
: "=m" (array) : "a" (&array), "a" (((low)<<4)+(high)): "1" ); \ : "=m" (*(addrtype *)(array)) \
: "a" (&array), "a" (((low)<<4)+(high)): "1" ); \
}) })
#define __ctl_set_bit(cr, bit) ({ \ #define __ctl_set_bit(cr, bit) ({ \
......
...@@ -161,7 +161,7 @@ struct exception_table_entry ...@@ -161,7 +161,7 @@ struct exception_table_entry
__put_user_asm(__x, ptr, __pu_err); \ __put_user_asm(__x, ptr, __pu_err); \
break; \ break; \
default: \ default: \
__pu_err = __put_user_bad(); \ __put_user_bad(); \
break; \ break; \
} \ } \
__pu_err; \ __pu_err; \
...@@ -182,7 +182,7 @@ struct exception_table_entry ...@@ -182,7 +182,7 @@ struct exception_table_entry
}) })
extern int __put_user_bad(void); extern int __put_user_bad(void) __attribute__((noreturn));
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
#define __get_user_asm(x, ptr, err) \ #define __get_user_asm(x, ptr, err) \
...@@ -225,8 +225,7 @@ extern int __put_user_bad(void); ...@@ -225,8 +225,7 @@ extern int __put_user_bad(void);
__get_user_asm(__x, ptr, __gu_err); \ __get_user_asm(__x, ptr, __gu_err); \
break; \ break; \
default: \ default: \
__x = 0; \ __get_user_bad(); \
__gu_err = __get_user_bad(); \
break; \ break; \
} \ } \
(x) = __x; \ (x) = __x; \
...@@ -248,7 +247,7 @@ extern int __put_user_bad(void); ...@@ -248,7 +247,7 @@ extern int __put_user_bad(void);
__get_user(x, ptr); \ __get_user(x, ptr); \
}) })
extern int __get_user_bad(void); extern int __get_user_bad(void) __attribute__((noreturn));
#define __put_user_unaligned __put_user #define __put_user_unaligned __put_user
#define __get_user_unaligned __get_user #define __get_user_unaligned __get_user
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment