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
__setup_start = .;
.init.setup : { *(.init.setup) }
__setup_end = .;
+ __start___param = .;
+ __param : { *(__param) }
+ __stop___param = .;
__initcall_start = .;
.initcall.init : {
*(.initcall1.init)
*(.exit.text)
*(.exit.data)
*(.exitcall.exit)
+ *(.eh_frame)
}
/* Stabs debugging sections. */
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
__setup_start = .;
.init.setup : { *(.init.setup) }
__setup_end = .;
+ __start___param = .;
+ __param : { *(__param) }
+ __stop___param = .;
__initcall_start = .;
.initcall.init : {
*(.initcall1.init)
*(.exit.text)
*(.exit.data)
*(.exitcall.exit)
+ *(.eh_frame)
}
/* Stabs debugging sections. */
* Bugreports.to..: <Linux390@de.ibm.com>
* (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
* History of changes
*
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 */
* 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;
}
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;
}
__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
}
#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); \
}
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); \
}
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); \
}
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); \
}
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), \
"d" (__arg4), \
"d" (__arg5) \
: _svc_clobber ); \
+ __res = __svcres; \
__syscall_return(type,__res); \
}
* 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;
}
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;
}
__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
}
#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); \
}
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); \
}
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); \
}
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); \
}
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), \
"d" (__arg4), \
"d" (__arg5) \
: _svc_clobber ); \
+ __res = __svcres; \
__syscall_return(type,__res); \
}