diff options
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/Makefile | 6 | ||||
-rw-r--r-- | arch/powerpc/configs/ppc64_defconfig | 2 | ||||
-rw-r--r-- | arch/powerpc/kernel/Makefile | 3 | ||||
-rw-r--r-- | arch/powerpc/kernel/ioctl32.c | 45 | ||||
-rw-r--r-- | arch/powerpc/kernel/kprobes.c | 15 | ||||
-rw-r--r-- | arch/powerpc/kernel/sys_ppc32.c | 32 | ||||
-rw-r--r-- | arch/powerpc/kernel/systbl.S | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/inode.c | 2 |
8 files changed, 12 insertions, 95 deletions
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 5f80e58e5cb3..d3654a264ef7 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -76,8 +76,7 @@ LINUXINCLUDE += $(LINUXINCLUDE-y) | |||
76 | CHECKFLAGS += -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__ | 76 | CHECKFLAGS += -m$(SZ) -D__powerpc__ -D__powerpc$(SZ)__ |
77 | 77 | ||
78 | ifeq ($(CONFIG_PPC64),y) | 78 | ifeq ($(CONFIG_PPC64),y) |
79 | GCC_VERSION := $(call cc-version) | 79 | GCC_BROKEN_VEC := $(shell if [ $(call cc-version) -lt 0400 ] ; then echo "y"; fi) |
80 | GCC_BROKEN_VEC := $(shell if [ $(GCC_VERSION) -lt 0400 ] ; then echo "y"; fi) | ||
81 | 80 | ||
82 | ifeq ($(CONFIG_POWER4_ONLY),y) | 81 | ifeq ($(CONFIG_POWER4_ONLY),y) |
83 | ifeq ($(CONFIG_ALTIVEC),y) | 82 | ifeq ($(CONFIG_ALTIVEC),y) |
@@ -189,10 +188,9 @@ TOUT := .tmp_gas_check | |||
189 | # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec | 188 | # Ensure this is binutils 2.12.1 (or 2.12.90.0.7) or later for altivec |
190 | # instructions. | 189 | # instructions. |
191 | # gcc-3.4 and binutils-2.14 are a fatal combination. | 190 | # gcc-3.4 and binutils-2.14 are a fatal combination. |
192 | GCC_VERSION := $(call cc-version) | ||
193 | 191 | ||
194 | checkbin: | 192 | checkbin: |
195 | @if test "$(GCC_VERSION)" = "0304" ; then \ | 193 | @if test "$(call cc-version)" = "0304" ; then \ |
196 | if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \ | 194 | if ! /bin/echo mftb 5 | $(AS) -v -mppc -many -o $(TOUT) >/dev/null 2>&1 ; then \ |
197 | echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '; \ | 195 | echo -n '*** ${VERSION}.${PATCHLEVEL} kernels no longer build '; \ |
198 | echo 'correctly with gcc-3.4 and your version of binutils.'; \ | 196 | echo 'correctly with gcc-3.4 and your version of binutils.'; \ |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 509399eab6f5..347f4391db8d 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -861,7 +861,7 @@ CONFIG_SERIAL_CORE=y | |||
861 | CONFIG_SERIAL_CORE_CONSOLE=y | 861 | CONFIG_SERIAL_CORE_CONSOLE=y |
862 | # CONFIG_SERIAL_PMACZILOG is not set | 862 | # CONFIG_SERIAL_PMACZILOG is not set |
863 | CONFIG_SERIAL_ICOM=m | 863 | CONFIG_SERIAL_ICOM=m |
864 | CONFIG_SERIAL_JSM=m | 864 | # CONFIG_SERIAL_JSM is not set |
865 | CONFIG_UNIX98_PTYS=y | 865 | CONFIG_UNIX98_PTYS=y |
866 | CONFIG_LEGACY_PTYS=y | 866 | CONFIG_LEGACY_PTYS=y |
867 | CONFIG_LEGACY_PTY_COUNT=256 | 867 | CONFIG_LEGACY_PTY_COUNT=256 |
diff --git a/arch/powerpc/kernel/Makefile b/arch/powerpc/kernel/Makefile index 0faf95c93ef8..144e284d21dd 100644 --- a/arch/powerpc/kernel/Makefile +++ b/arch/powerpc/kernel/Makefile | |||
@@ -4,7 +4,6 @@ | |||
4 | 4 | ||
5 | ifeq ($(CONFIG_PPC64),y) | 5 | ifeq ($(CONFIG_PPC64),y) |
6 | EXTRA_CFLAGS += -mno-minimal-toc | 6 | EXTRA_CFLAGS += -mno-minimal-toc |
7 | CFLAGS_ioctl32.o += -Ifs/ | ||
8 | endif | 7 | endif |
9 | ifeq ($(CONFIG_PPC32),y) | 8 | ifeq ($(CONFIG_PPC32),y) |
10 | CFLAGS_prom_init.o += -fPIC | 9 | CFLAGS_prom_init.o += -fPIC |
@@ -16,7 +15,7 @@ obj-y := semaphore.o cputable.o ptrace.o syscalls.o \ | |||
16 | obj-y += vdso32/ | 15 | obj-y += vdso32/ |
17 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ | 16 | obj-$(CONFIG_PPC64) += setup_64.o binfmt_elf32.o sys_ppc32.o \ |
18 | signal_64.o ptrace32.o systbl.o \ | 17 | signal_64.o ptrace32.o systbl.o \ |
19 | paca.o ioctl32.o cpu_setup_power4.o \ | 18 | paca.o cpu_setup_power4.o \ |
20 | firmware.o sysfs.o idle_64.o | 19 | firmware.o sysfs.o idle_64.o |
21 | obj-$(CONFIG_PPC64) += vdso64/ | 20 | obj-$(CONFIG_PPC64) += vdso64/ |
22 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o | 21 | obj-$(CONFIG_ALTIVEC) += vecemu.o vector.o |
diff --git a/arch/powerpc/kernel/ioctl32.c b/arch/powerpc/kernel/ioctl32.c deleted file mode 100644 index 0fa3d27fef01..000000000000 --- a/arch/powerpc/kernel/ioctl32.c +++ /dev/null | |||
@@ -1,45 +0,0 @@ | |||
1 | /* | ||
2 | * ioctl32.c: Conversion between 32bit and 64bit native ioctls. | ||
3 | * | ||
4 | * Based on sparc64 ioctl32.c by: | ||
5 | * | ||
6 | * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) | ||
7 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | ||
8 | * | ||
9 | * ppc64 changes: | ||
10 | * | ||
11 | * Copyright (C) 2000 Ken Aaker (kdaaker@rchland.vnet.ibm.com) | ||
12 | * Copyright (C) 2001 Anton Blanchard (antonb@au.ibm.com) | ||
13 | * | ||
14 | * These routines maintain argument size conversion between 32bit and 64bit | ||
15 | * ioctls. | ||
16 | * | ||
17 | * This program is free software; you can redistribute it and/or | ||
18 | * modify it under the terms of the GNU General Public License | ||
19 | * as published by the Free Software Foundation; either version | ||
20 | * 2 of the License, or (at your option) any later version. | ||
21 | */ | ||
22 | |||
23 | #define INCLUDES | ||
24 | #include "compat_ioctl.c" | ||
25 | #include <linux/syscalls.h> | ||
26 | |||
27 | #define CODE | ||
28 | #include "compat_ioctl.c" | ||
29 | |||
30 | #define HANDLE_IOCTL(cmd,handler) { cmd, (ioctl_trans_handler_t)handler, NULL }, | ||
31 | #define COMPATIBLE_IOCTL(cmd) HANDLE_IOCTL(cmd,sys_ioctl) | ||
32 | |||
33 | #define IOCTL_TABLE_START \ | ||
34 | struct ioctl_trans ioctl_start[] = { | ||
35 | #define IOCTL_TABLE_END \ | ||
36 | }; | ||
37 | |||
38 | IOCTL_TABLE_START | ||
39 | #include <linux/compat_ioctl.h> | ||
40 | #define DECLARES | ||
41 | #include "compat_ioctl.c" | ||
42 | |||
43 | IOCTL_TABLE_END | ||
44 | |||
45 | int ioctl_table_size = ARRAY_SIZE(ioctl_start); | ||
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index 5368f9c2e6bf..27b0c40601fb 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/kdebug.h> | 35 | #include <asm/kdebug.h> |
36 | #include <asm/sstep.h> | 36 | #include <asm/sstep.h> |
37 | 37 | ||
38 | static DECLARE_MUTEX(kprobe_mutex); | ||
39 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; | 38 | DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL; |
40 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); | 39 | DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk); |
41 | 40 | ||
@@ -54,19 +53,17 @@ int __kprobes arch_prepare_kprobe(struct kprobe *p) | |||
54 | 53 | ||
55 | /* insn must be on a special executable page on ppc64 */ | 54 | /* insn must be on a special executable page on ppc64 */ |
56 | if (!ret) { | 55 | if (!ret) { |
57 | down(&kprobe_mutex); | ||
58 | p->ainsn.insn = get_insn_slot(); | 56 | p->ainsn.insn = get_insn_slot(); |
59 | up(&kprobe_mutex); | ||
60 | if (!p->ainsn.insn) | 57 | if (!p->ainsn.insn) |
61 | ret = -ENOMEM; | 58 | ret = -ENOMEM; |
62 | } | 59 | } |
63 | return ret; | ||
64 | } | ||
65 | 60 | ||
66 | void __kprobes arch_copy_kprobe(struct kprobe *p) | 61 | if (!ret) { |
67 | { | 62 | memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); |
68 | memcpy(p->ainsn.insn, p->addr, MAX_INSN_SIZE * sizeof(kprobe_opcode_t)); | 63 | p->opcode = *p->addr; |
69 | p->opcode = *p->addr; | 64 | } |
65 | |||
66 | return ret; | ||
70 | } | 67 | } |
71 | 68 | ||
72 | void __kprobes arch_arm_kprobe(struct kprobe *p) | 69 | void __kprobes arch_arm_kprobe(struct kprobe *p) |
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index 9b6d965fb13e..475249dc2350 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c | |||
@@ -932,38 +932,6 @@ long ppc32_fadvise64(int fd, u32 unused, u32 offset_high, u32 offset_low, | |||
932 | advice); | 932 | advice); |
933 | } | 933 | } |
934 | 934 | ||
935 | long ppc32_timer_create(clockid_t clock, | ||
936 | struct compat_sigevent __user *ev32, | ||
937 | timer_t __user *timer_id) | ||
938 | { | ||
939 | sigevent_t event; | ||
940 | timer_t t; | ||
941 | long err; | ||
942 | mm_segment_t savefs; | ||
943 | |||
944 | if (ev32 == NULL) | ||
945 | return sys_timer_create(clock, NULL, timer_id); | ||
946 | |||
947 | if (get_compat_sigevent(&event, ev32)) | ||
948 | return -EFAULT; | ||
949 | |||
950 | if (!access_ok(VERIFY_WRITE, timer_id, sizeof(timer_t))) | ||
951 | return -EFAULT; | ||
952 | |||
953 | savefs = get_fs(); | ||
954 | set_fs(KERNEL_DS); | ||
955 | /* The __user pointer casts are valid due to the set_fs() */ | ||
956 | err = sys_timer_create(clock, | ||
957 | (sigevent_t __user *) &event, | ||
958 | (timer_t __user *) &t); | ||
959 | set_fs(savefs); | ||
960 | |||
961 | if (err == 0) | ||
962 | err = __put_user(t, timer_id); | ||
963 | |||
964 | return err; | ||
965 | } | ||
966 | |||
967 | asmlinkage long compat_sys_add_key(const char __user *_type, | 935 | asmlinkage long compat_sys_add_key(const char __user *_type, |
968 | const char __user *_description, | 936 | const char __user *_description, |
969 | const void __user *_payload, | 937 | const void __user *_payload, |
diff --git a/arch/powerpc/kernel/systbl.S b/arch/powerpc/kernel/systbl.S index c3ae74b1bf2d..68013179a503 100644 --- a/arch/powerpc/kernel/systbl.S +++ b/arch/powerpc/kernel/systbl.S | |||
@@ -281,7 +281,7 @@ SYSCALL(epoll_create) | |||
281 | SYSCALL(epoll_ctl) | 281 | SYSCALL(epoll_ctl) |
282 | SYSCALL(epoll_wait) | 282 | SYSCALL(epoll_wait) |
283 | SYSCALL(remap_file_pages) | 283 | SYSCALL(remap_file_pages) |
284 | SYSX(sys_timer_create,ppc32_timer_create,sys_timer_create) | 284 | SYSX(sys_timer_create,compat_sys_timer_create,sys_timer_create) |
285 | COMPAT_SYS(timer_settime) | 285 | COMPAT_SYS(timer_settime) |
286 | COMPAT_SYS(timer_gettime) | 286 | COMPAT_SYS(timer_gettime) |
287 | SYSCALL(timer_getoverrun) | 287 | SYSCALL(timer_getoverrun) |
diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c index d2ba358c6e38..b3962c3a0348 100644 --- a/arch/powerpc/platforms/cell/spufs/inode.c +++ b/arch/powerpc/platforms/cell/spufs/inode.c | |||
@@ -138,7 +138,7 @@ static void spufs_prune_dir(struct dentry *dir) | |||
138 | { | 138 | { |
139 | struct dentry *dentry, *tmp; | 139 | struct dentry *dentry, *tmp; |
140 | mutex_lock(&dir->d_inode->i_mutex); | 140 | mutex_lock(&dir->d_inode->i_mutex); |
141 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { | 141 | list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) { |
142 | spin_lock(&dcache_lock); | 142 | spin_lock(&dcache_lock); |
143 | spin_lock(&dentry->d_lock); | 143 | spin_lock(&dentry->d_lock); |
144 | if (!(d_unhashed(dentry)) && dentry->d_inode) { | 144 | if (!(d_unhashed(dentry)) && dentry->d_inode) { |