diff options
Diffstat (limited to 'arch/s390')
| -rw-r--r-- | arch/s390/defconfig | 9 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_linux.c | 20 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_signal.c | 3 | ||||
| -rw-r--r-- | arch/s390/kernel/compat_wrapper.S | 13 | ||||
| -rw-r--r-- | arch/s390/kernel/machine_kexec.c | 5 | ||||
| -rw-r--r-- | arch/s390/kernel/smp.c | 6 | ||||
| -rw-r--r-- | arch/s390/kernel/syscalls.S | 3 | ||||
| -rw-r--r-- | arch/s390/lib/delay.c | 2 |
8 files changed, 41 insertions, 20 deletions
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index 3525c91204d4..f8d0cd540a06 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.16-rc1 | 3 | # Linux kernel version: 2.6.16-rc2 |
| 4 | # Thu Jan 19 10:58:53 2006 | 4 | # Wed Feb 8 10:44:39 2006 |
| 5 | # | 5 | # |
| 6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
| 7 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 7 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| @@ -12,7 +12,6 @@ CONFIG_S390=y | |||
| 12 | # Code maturity level options | 12 | # Code maturity level options |
| 13 | # | 13 | # |
| 14 | CONFIG_EXPERIMENTAL=y | 14 | CONFIG_EXPERIMENTAL=y |
| 15 | CONFIG_CLEAN_COMPILE=y | ||
| 16 | CONFIG_LOCK_KERNEL=y | 15 | CONFIG_LOCK_KERNEL=y |
| 17 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 16 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
| 18 | 17 | ||
| @@ -154,6 +153,7 @@ CONFIG_NET=y | |||
| 154 | # | 153 | # |
| 155 | # Networking options | 154 | # Networking options |
| 156 | # | 155 | # |
| 156 | # CONFIG_NETDEBUG is not set | ||
| 157 | CONFIG_PACKET=y | 157 | CONFIG_PACKET=y |
| 158 | # CONFIG_PACKET_MMAP is not set | 158 | # CONFIG_PACKET_MMAP is not set |
| 159 | CONFIG_UNIX=y | 159 | CONFIG_UNIX=y |
| @@ -607,6 +607,7 @@ CONFIG_MSDOS_PARTITION=y | |||
| 607 | # Instrumentation Support | 607 | # Instrumentation Support |
| 608 | # | 608 | # |
| 609 | # CONFIG_PROFILING is not set | 609 | # CONFIG_PROFILING is not set |
| 610 | # CONFIG_STATISTICS is not set | ||
| 610 | 611 | ||
| 611 | # | 612 | # |
| 612 | # Kernel hacking | 613 | # Kernel hacking |
| @@ -624,7 +625,7 @@ CONFIG_DEBUG_MUTEXES=y | |||
| 624 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 625 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 625 | # CONFIG_DEBUG_KOBJECT is not set | 626 | # CONFIG_DEBUG_KOBJECT is not set |
| 626 | # CONFIG_DEBUG_INFO is not set | 627 | # CONFIG_DEBUG_INFO is not set |
| 627 | # CONFIG_DEBUG_FS is not set | 628 | CONFIG_DEBUG_FS=y |
| 628 | # CONFIG_DEBUG_VM is not set | 629 | # CONFIG_DEBUG_VM is not set |
| 629 | CONFIG_FORCED_INLINING=y | 630 | CONFIG_FORCED_INLINING=y |
| 630 | # CONFIG_RCU_TORTURE_TEST is not set | 631 | # CONFIG_RCU_TORTURE_TEST is not set |
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index cc20f0e3a7d3..2d021626c1a6 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
| @@ -905,6 +905,26 @@ asmlinkage long sys32_fstat64(unsigned long fd, struct stat64_emu31 __user * sta | |||
| 905 | return ret; | 905 | return ret; |
| 906 | } | 906 | } |
| 907 | 907 | ||
| 908 | asmlinkage long sys32_fstatat(unsigned int dfd, char __user *filename, | ||
| 909 | struct stat64_emu31 __user* statbuf, int flag) | ||
| 910 | { | ||
| 911 | struct kstat stat; | ||
| 912 | int error = -EINVAL; | ||
| 913 | |||
| 914 | if ((flag & ~AT_SYMLINK_NOFOLLOW) != 0) | ||
| 915 | goto out; | ||
| 916 | |||
| 917 | if (flag & AT_SYMLINK_NOFOLLOW) | ||
| 918 | error = vfs_lstat_fd(dfd, filename, &stat); | ||
| 919 | else | ||
| 920 | error = vfs_stat_fd(dfd, filename, &stat); | ||
| 921 | |||
| 922 | if (!error) | ||
| 923 | error = cp_stat64(statbuf, &stat); | ||
| 924 | out: | ||
| 925 | return error; | ||
| 926 | } | ||
| 927 | |||
| 908 | /* | 928 | /* |
| 909 | * Linux/i386 didn't use to be able to handle more than | 929 | * Linux/i386 didn't use to be able to handle more than |
| 910 | * 4 system call parameters, so these system calls used a memory | 930 | * 4 system call parameters, so these system calls used a memory |
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index ef706694a0c1..5291b5f8788d 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
| @@ -195,9 +195,6 @@ sys32_sigaction(int sig, const struct old_sigaction32 __user *act, | |||
| 195 | return ret; | 195 | return ret; |
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | int | ||
| 199 | do_sigaction(int sig, const struct k_sigaction *act, struct k_sigaction *oact); | ||
| 200 | |||
| 201 | asmlinkage long | 198 | asmlinkage long |
| 202 | sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, | 199 | sys32_rt_sigaction(int sig, const struct sigaction32 __user *act, |
| 203 | struct sigaction32 __user *oact, size_t sigsetsize) | 200 | struct sigaction32 __user *oact, size_t sigsetsize) |
diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 83b33fe1923c..dd2d6c3e8df8 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S | |||
| @@ -1523,13 +1523,13 @@ compat_sys_futimesat_wrapper: | |||
| 1523 | llgtr %r4,%r4 # struct timeval * | 1523 | llgtr %r4,%r4 # struct timeval * |
| 1524 | jg compat_sys_futimesat | 1524 | jg compat_sys_futimesat |
| 1525 | 1525 | ||
| 1526 | .globl compat_sys_newfstatat_wrapper | 1526 | .globl sys32_fstatat_wrapper |
| 1527 | compat_sys_newfstatat_wrapper: | 1527 | sys32_fstatat_wrapper: |
| 1528 | llgfr %r2,%r2 # unsigned int | 1528 | llgfr %r2,%r2 # unsigned int |
| 1529 | llgtr %r3,%r3 # char * | 1529 | llgtr %r3,%r3 # char * |
| 1530 | llgtr %r4,%r4 # struct stat * | 1530 | llgtr %r4,%r4 # struct stat64 * |
| 1531 | lgfr %r5,%r5 # int | 1531 | lgfr %r5,%r5 # int |
| 1532 | jg compat_sys_newfstatat | 1532 | jg sys32_fstatat |
| 1533 | 1533 | ||
| 1534 | .globl sys_unlinkat_wrapper | 1534 | .globl sys_unlinkat_wrapper |
| 1535 | sys_unlinkat_wrapper: | 1535 | sys_unlinkat_wrapper: |
| @@ -1602,3 +1602,8 @@ compat_sys_ppoll_wrapper: | |||
| 1602 | llgtr %r5,%r5 # const sigset_t * | 1602 | llgtr %r5,%r5 # const sigset_t * |
| 1603 | llgfr %r6,%r6 # size_t | 1603 | llgfr %r6,%r6 # size_t |
| 1604 | jg compat_sys_ppoll | 1604 | jg compat_sys_ppoll |
| 1605 | |||
| 1606 | .globl sys_unshare_wrapper | ||
| 1607 | sys_unshare_wrapper: | ||
| 1608 | llgfr %r2,%r2 # unsigned long | ||
| 1609 | jg sys_unshare | ||
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c index f0ed5c642c74..bad81b5832db 100644 --- a/arch/s390/kernel/machine_kexec.c +++ b/arch/s390/kernel/machine_kexec.c | |||
| @@ -12,15 +12,16 @@ | |||
| 12 | * on the S390 architecture. | 12 | * on the S390 architecture. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <asm/cio.h> | ||
| 16 | #include <asm/setup.h> | ||
| 17 | #include <linux/device.h> | 15 | #include <linux/device.h> |
| 18 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
| 19 | #include <linux/kexec.h> | 17 | #include <linux/kexec.h> |
| 20 | #include <linux/delay.h> | 18 | #include <linux/delay.h> |
| 19 | #include <asm/cio.h> | ||
| 20 | #include <asm/setup.h> | ||
| 21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
| 22 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
| 23 | #include <asm/system.h> | 23 | #include <asm/system.h> |
| 24 | #include <asm/smp.h> | ||
| 24 | 25 | ||
| 25 | static void kexec_halt_all_cpus(void *); | 26 | static void kexec_halt_all_cpus(void *); |
| 26 | 27 | ||
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index cbfcfd02a43a..0d1ad5dbe2b1 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
| @@ -52,7 +52,7 @@ extern volatile int __cpu_logical_map[]; | |||
| 52 | struct _lowcore *lowcore_ptr[NR_CPUS]; | 52 | struct _lowcore *lowcore_ptr[NR_CPUS]; |
| 53 | 53 | ||
| 54 | cpumask_t cpu_online_map; | 54 | cpumask_t cpu_online_map; |
| 55 | cpumask_t cpu_possible_map; | 55 | cpumask_t cpu_possible_map = CPU_MASK_ALL; |
| 56 | 56 | ||
| 57 | static struct task_struct *current_set[NR_CPUS]; | 57 | static struct task_struct *current_set[NR_CPUS]; |
| 58 | 58 | ||
| @@ -514,9 +514,6 @@ __init smp_check_cpus(unsigned int max_cpus) | |||
| 514 | num_cpus++; | 514 | num_cpus++; |
| 515 | } | 515 | } |
| 516 | 516 | ||
| 517 | for (cpu = 1; cpu < max_cpus; cpu++) | ||
| 518 | cpu_set(cpu, cpu_possible_map); | ||
| 519 | |||
| 520 | printk("Detected %d CPU's\n",(int) num_cpus); | 517 | printk("Detected %d CPU's\n",(int) num_cpus); |
| 521 | printk("Boot cpu address %2X\n", boot_cpu_addr); | 518 | printk("Boot cpu address %2X\n", boot_cpu_addr); |
| 522 | } | 519 | } |
| @@ -810,7 +807,6 @@ void __devinit smp_prepare_boot_cpu(void) | |||
| 810 | 807 | ||
| 811 | cpu_set(0, cpu_online_map); | 808 | cpu_set(0, cpu_online_map); |
| 812 | cpu_set(0, cpu_present_map); | 809 | cpu_set(0, cpu_present_map); |
| 813 | cpu_set(0, cpu_possible_map); | ||
| 814 | S390_lowcore.percpu_offset = __per_cpu_offset[0]; | 810 | S390_lowcore.percpu_offset = __per_cpu_offset[0]; |
| 815 | current_set[0] = current; | 811 | current_set[0] = current; |
| 816 | } | 812 | } |
diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 3280345efacd..84921fe8d266 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S | |||
| @@ -301,7 +301,7 @@ SYSCALL(sys_mkdirat,sys_mkdirat,sys_mkdirat_wrapper) | |||
| 301 | SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ | 301 | SYSCALL(sys_mknodat,sys_mknodat,sys_mknodat_wrapper) /* 290 */ |
| 302 | SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) | 302 | SYSCALL(sys_fchownat,sys_fchownat,sys_fchownat_wrapper) |
| 303 | SYSCALL(sys_futimesat,sys_futimesat,compat_sys_futimesat_wrapper) | 303 | SYSCALL(sys_futimesat,sys_futimesat,compat_sys_futimesat_wrapper) |
| 304 | SYSCALL(sys_newfstatat,sys_newfstatat,compat_sys_newfstatat_wrapper) | 304 | SYSCALL(sys_fstatat64,sys_newfstatat,sys32_fstatat_wrapper) |
| 305 | SYSCALL(sys_unlinkat,sys_unlinkat,sys_unlinkat_wrapper) | 305 | SYSCALL(sys_unlinkat,sys_unlinkat,sys_unlinkat_wrapper) |
| 306 | SYSCALL(sys_renameat,sys_renameat,sys_renameat_wrapper) /* 295 */ | 306 | SYSCALL(sys_renameat,sys_renameat,sys_renameat_wrapper) /* 295 */ |
| 307 | SYSCALL(sys_linkat,sys_linkat,sys_linkat_wrapper) | 307 | SYSCALL(sys_linkat,sys_linkat,sys_linkat_wrapper) |
| @@ -311,3 +311,4 @@ SYSCALL(sys_fchmodat,sys_fchmodat,sys_fchmodat_wrapper) | |||
| 311 | SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */ | 311 | SYSCALL(sys_faccessat,sys_faccessat,sys_faccessat_wrapper) /* 300 */ |
| 312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) | 312 | SYSCALL(sys_pselect6,sys_pselect6,compat_sys_pselect6_wrapper) |
| 313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) | 313 | SYSCALL(sys_ppoll,sys_ppoll,compat_sys_ppoll_wrapper) |
| 314 | SYSCALL(sys_unshare,sys_unshare,sys_unshare_wrapper) | ||
diff --git a/arch/s390/lib/delay.c b/arch/s390/lib/delay.c index e96c35bddac7..71f0a2fb3078 100644 --- a/arch/s390/lib/delay.c +++ b/arch/s390/lib/delay.c | |||
| @@ -30,7 +30,7 @@ void __delay(unsigned long loops) | |||
| 30 | */ | 30 | */ |
| 31 | __asm__ __volatile__( | 31 | __asm__ __volatile__( |
| 32 | "0: brct %0,0b" | 32 | "0: brct %0,0b" |
| 33 | : /* no outputs */ : "r" (loops/2) ); | 33 | : /* no outputs */ : "r" ((loops/2) + 1)); |
| 34 | } | 34 | } |
| 35 | 35 | ||
| 36 | /* | 36 | /* |
