diff options
author | Richard Weinberger <richard@nod.at> | 2015-03-18 16:28:15 -0400 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2015-04-13 15:00:48 -0400 |
commit | aaeac66b1a02d399ec8ee63e8d617c1d601ea353 (patch) | |
tree | f3b578f774332b45aa3e3ca5d1272bf67e034225 /arch/um | |
parent | 23fc5f156bddbaaa8939a74c67dfd5bf6d07f596 (diff) |
um: Remove ppc cruft
That code is a relict from the early days of UML.
ppc support was never completed nor worked.
Let's rip it out.
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um')
-rw-r--r-- | arch/um/Makefile-ppc | 9 | ||||
-rw-r--r-- | arch/um/sys-ppc/Makefile | 65 | ||||
-rw-r--r-- | arch/um/sys-ppc/asm/archparam.h | 8 | ||||
-rw-r--r-- | arch/um/sys-ppc/asm/elf.h | 51 | ||||
-rw-r--r-- | arch/um/sys-ppc/asm/processor.h | 15 | ||||
-rw-r--r-- | arch/um/sys-ppc/misc.S | 111 | ||||
-rw-r--r-- | arch/um/sys-ppc/miscthings.c | 42 | ||||
-rw-r--r-- | arch/um/sys-ppc/ptrace.c | 58 | ||||
-rw-r--r-- | arch/um/sys-ppc/ptrace_user.c | 29 | ||||
-rw-r--r-- | arch/um/sys-ppc/shared/sysdep/ptrace.h | 93 | ||||
-rw-r--r-- | arch/um/sys-ppc/shared/sysdep/sigcontext.h | 52 | ||||
-rw-r--r-- | arch/um/sys-ppc/shared/sysdep/skas_ptrace.h | 22 | ||||
-rw-r--r-- | arch/um/sys-ppc/shared/sysdep/syscalls.h | 43 | ||||
-rw-r--r-- | arch/um/sys-ppc/sigcontext.c | 4 | ||||
-rw-r--r-- | arch/um/sys-ppc/sysrq.c | 33 |
15 files changed, 0 insertions, 635 deletions
diff --git a/arch/um/Makefile-ppc b/arch/um/Makefile-ppc deleted file mode 100644 index 66fd2003e165..000000000000 --- a/arch/um/Makefile-ppc +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | ifeq ($(CONFIG_HOST_2G_2G), y) | ||
2 | START_ADDR = 0x80000000 | ||
3 | else | ||
4 | START_ADDR = 0xc0000000 | ||
5 | endif | ||
6 | ARCH_CFLAGS = -U__powerpc__ -D__UM_PPC__ | ||
7 | |||
8 | # The arch is ppc, but the elf32 name is powerpc | ||
9 | ELF_SUBARCH = powerpc | ||
diff --git a/arch/um/sys-ppc/Makefile b/arch/um/sys-ppc/Makefile deleted file mode 100644 index 20d363bd7004..000000000000 --- a/arch/um/sys-ppc/Makefile +++ /dev/null | |||
@@ -1,65 +0,0 @@ | |||
1 | OBJ = built-in.o | ||
2 | |||
3 | .S.o: | ||
4 | $(CC) $(KBUILD_AFLAGS) -D__ASSEMBLY__ -D__UM_PPC__ -c $< -o $*.o | ||
5 | |||
6 | OBJS = ptrace.o sigcontext.o checksum.o miscthings.o misc.o \ | ||
7 | ptrace_user.o sysrq.o | ||
8 | |||
9 | asflags-y := -DCONFIG_PPC32 -I. -I$(srctree)/arch/ppc/kernel | ||
10 | |||
11 | all: $(OBJ) | ||
12 | |||
13 | $(OBJ): $(OBJS) | ||
14 | rm -f $@ | ||
15 | $(LD) $(LINKFLAGS) --start-group $^ --end-group -o $@ | ||
16 | |||
17 | ptrace_user.o: ptrace_user.c | ||
18 | $(CC) -D__KERNEL__ $(USER_CFLAGS) $(ccflags-y) -c -o $@ $< | ||
19 | |||
20 | sigcontext.o: sigcontext.c | ||
21 | $(CC) $(USER_CFLAGS) $(ccflags-y) -c -o $@ $< | ||
22 | |||
23 | checksum.S: | ||
24 | rm -f $@ | ||
25 | ln -s $(srctree)/arch/ppc/lib/$@ $@ | ||
26 | |||
27 | mk_defs.c: | ||
28 | rm -f $@ | ||
29 | ln -s $(srctree)/arch/ppc/kernel/$@ $@ | ||
30 | |||
31 | ppc_defs.head: | ||
32 | rm -f $@ | ||
33 | ln -s $(srctree)/arch/ppc/kernel/$@ $@ | ||
34 | |||
35 | ppc_defs.h: mk_defs.c ppc_defs.head \ | ||
36 | $(srctree)/include/asm-ppc/mmu.h \ | ||
37 | $(srctree)/include/asm-ppc/processor.h \ | ||
38 | $(srctree)/include/asm-ppc/pgtable.h \ | ||
39 | $(srctree)/include/asm-ppc/ptrace.h | ||
40 | # $(CC) $(CFLAGS) -S mk_defs.c | ||
41 | cp ppc_defs.head ppc_defs.h | ||
42 | # for bk, this way we can write to the file even if it's not checked out | ||
43 | echo '#define THREAD 608' >> ppc_defs.h | ||
44 | echo '#define PT_REGS 8' >> ppc_defs.h | ||
45 | echo '#define CLONE_VM 256' >> ppc_defs.h | ||
46 | # chmod u+w ppc_defs.h | ||
47 | # grep '^#define' mk_defs.s >> ppc_defs.h | ||
48 | # rm mk_defs.s | ||
49 | |||
50 | # the asm link is horrible, and breaks the other targets. This is also | ||
51 | # not going to work with parallel makes. | ||
52 | |||
53 | checksum.o: checksum.S | ||
54 | rm -f asm | ||
55 | ln -s $(srctree)/include/asm-ppc asm | ||
56 | $(CC) $(asflags-y) $(KBUILD_AFLAGS) -D__ASSEMBLY__ -D__UM_PPC__ -c $< -o $*.o | ||
57 | rm -f asm | ||
58 | |||
59 | misc.o: misc.S ppc_defs.h | ||
60 | rm -f asm | ||
61 | ln -s $(srctree)/include/asm-ppc asm | ||
62 | $(CC) $(asflags-y) $(KBUILD_AFLAGS) -D__ASSEMBLY__ -D__UM_PPC__ -c $< -o $*.o | ||
63 | rm -f asm | ||
64 | |||
65 | clean-files := $(OBJS) ppc_defs.h checksum.S mk_defs.c | ||
diff --git a/arch/um/sys-ppc/asm/archparam.h b/arch/um/sys-ppc/asm/archparam.h deleted file mode 100644 index 4269d8a37b4f..000000000000 --- a/arch/um/sys-ppc/asm/archparam.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef __UM_ARCHPARAM_PPC_H | ||
2 | #define __UM_ARCHPARAM_PPC_H | ||
3 | |||
4 | /********* Bits for asm-um/string.h **********/ | ||
5 | |||
6 | #define __HAVE_ARCH_STRRCHR | ||
7 | |||
8 | #endif | ||
diff --git a/arch/um/sys-ppc/asm/elf.h b/arch/um/sys-ppc/asm/elf.h deleted file mode 100644 index 8aacaf56508d..000000000000 --- a/arch/um/sys-ppc/asm/elf.h +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | #ifndef __UM_ELF_PPC_H | ||
2 | #define __UM_ELF_PPC_H | ||
3 | |||
4 | |||
5 | extern long elf_aux_hwcap; | ||
6 | #define ELF_HWCAP (elf_aux_hwcap) | ||
7 | |||
8 | #define SET_PERSONALITY(ex) do ; while(0) | ||
9 | |||
10 | #define ELF_EXEC_PAGESIZE 4096 | ||
11 | |||
12 | #define elf_check_arch(x) (1) | ||
13 | |||
14 | #ifdef CONFIG_64BIT | ||
15 | #define ELF_CLASS ELFCLASS64 | ||
16 | #else | ||
17 | #define ELF_CLASS ELFCLASS32 | ||
18 | #endif | ||
19 | |||
20 | #define R_386_NONE 0 | ||
21 | #define R_386_32 1 | ||
22 | #define R_386_PC32 2 | ||
23 | #define R_386_GOT32 3 | ||
24 | #define R_386_PLT32 4 | ||
25 | #define R_386_COPY 5 | ||
26 | #define R_386_GLOB_DAT 6 | ||
27 | #define R_386_JMP_SLOT 7 | ||
28 | #define R_386_RELATIVE 8 | ||
29 | #define R_386_GOTOFF 9 | ||
30 | #define R_386_GOTPC 10 | ||
31 | #define R_386_NUM 11 | ||
32 | |||
33 | #define ELF_PLATFORM (0) | ||
34 | |||
35 | #define ELF_ET_DYN_BASE (0x08000000) | ||
36 | |||
37 | /* the following stolen from asm-ppc/elf.h */ | ||
38 | #define ELF_NGREG 48 /* includes nip, msr, lr, etc. */ | ||
39 | #define ELF_NFPREG 33 /* includes fpscr */ | ||
40 | /* General registers */ | ||
41 | typedef unsigned long elf_greg_t; | ||
42 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | ||
43 | |||
44 | /* Floating point registers */ | ||
45 | typedef double elf_fpreg_t; | ||
46 | typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; | ||
47 | |||
48 | #define ELF_DATA ELFDATA2MSB | ||
49 | #define ELF_ARCH EM_PPC | ||
50 | |||
51 | #endif | ||
diff --git a/arch/um/sys-ppc/asm/processor.h b/arch/um/sys-ppc/asm/processor.h deleted file mode 100644 index 959323151229..000000000000 --- a/arch/um/sys-ppc/asm/processor.h +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | #ifndef __UM_PROCESSOR_PPC_H | ||
2 | #define __UM_PROCESSOR_PPC_H | ||
3 | |||
4 | #if defined(__ASSEMBLY__) | ||
5 | |||
6 | #define CONFIG_PPC_MULTIPLATFORM | ||
7 | #include "arch/processor.h" | ||
8 | |||
9 | #else | ||
10 | |||
11 | #include "asm/processor-generic.h" | ||
12 | |||
13 | #endif | ||
14 | |||
15 | #endif | ||
diff --git a/arch/um/sys-ppc/misc.S b/arch/um/sys-ppc/misc.S deleted file mode 100644 index 1364b7da578c..000000000000 --- a/arch/um/sys-ppc/misc.S +++ /dev/null | |||
@@ -1,111 +0,0 @@ | |||
1 | /* | ||
2 | * This file contains miscellaneous low-level functions. | ||
3 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | ||
4 | * | ||
5 | * Largely rewritten by Cort Dougan (cort@cs.nmt.edu) | ||
6 | * and Paul Mackerras. | ||
7 | * | ||
8 | * A couple of functions stolen from arch/ppc/kernel/misc.S for UML | ||
9 | * by Chris Emerson. | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or | ||
12 | * modify it under the terms of the GNU General Public License | ||
13 | * as published by the Free Software Foundation; either version | ||
14 | * 2 of the License, or (at your option) any later version. | ||
15 | * | ||
16 | */ | ||
17 | |||
18 | #include <asm/processor.h> | ||
19 | #include "ppc_asm.h" | ||
20 | |||
21 | #if defined(CONFIG_4xx) || defined(CONFIG_8xx) | ||
22 | #define CACHE_LINE_SIZE 16 | ||
23 | #define LG_CACHE_LINE_SIZE 4 | ||
24 | #define MAX_COPY_PREFETCH 1 | ||
25 | #else | ||
26 | #define CACHE_LINE_SIZE 32 | ||
27 | #define LG_CACHE_LINE_SIZE 5 | ||
28 | #define MAX_COPY_PREFETCH 4 | ||
29 | #endif /* CONFIG_4xx || CONFIG_8xx */ | ||
30 | |||
31 | .text | ||
32 | |||
33 | /* | ||
34 | * Clear a page using the dcbz instruction, which doesn't cause any | ||
35 | * memory traffic (except to write out any cache lines which get | ||
36 | * displaced). This only works on cacheable memory. | ||
37 | */ | ||
38 | _GLOBAL(clear_page) | ||
39 | li r0,4096/CACHE_LINE_SIZE | ||
40 | mtctr r0 | ||
41 | #ifdef CONFIG_8xx | ||
42 | li r4, 0 | ||
43 | 1: stw r4, 0(r3) | ||
44 | stw r4, 4(r3) | ||
45 | stw r4, 8(r3) | ||
46 | stw r4, 12(r3) | ||
47 | #else | ||
48 | 1: dcbz 0,r3 | ||
49 | #endif | ||
50 | addi r3,r3,CACHE_LINE_SIZE | ||
51 | bdnz 1b | ||
52 | blr | ||
53 | |||
54 | /* | ||
55 | * Copy a whole page. We use the dcbz instruction on the destination | ||
56 | * to reduce memory traffic (it eliminates the unnecessary reads of | ||
57 | * the destination into cache). This requires that the destination | ||
58 | * is cacheable. | ||
59 | */ | ||
60 | #define COPY_16_BYTES \ | ||
61 | lwz r6,4(r4); \ | ||
62 | lwz r7,8(r4); \ | ||
63 | lwz r8,12(r4); \ | ||
64 | lwzu r9,16(r4); \ | ||
65 | stw r6,4(r3); \ | ||
66 | stw r7,8(r3); \ | ||
67 | stw r8,12(r3); \ | ||
68 | stwu r9,16(r3) | ||
69 | |||
70 | _GLOBAL(copy_page) | ||
71 | addi r3,r3,-4 | ||
72 | addi r4,r4,-4 | ||
73 | li r5,4 | ||
74 | |||
75 | #ifndef CONFIG_8xx | ||
76 | #if MAX_COPY_PREFETCH > 1 | ||
77 | li r0,MAX_COPY_PREFETCH | ||
78 | li r11,4 | ||
79 | mtctr r0 | ||
80 | 11: dcbt r11,r4 | ||
81 | addi r11,r11,CACHE_LINE_SIZE | ||
82 | bdnz 11b | ||
83 | #else /* MAX_COPY_PREFETCH == 1 */ | ||
84 | dcbt r5,r4 | ||
85 | li r11,CACHE_LINE_SIZE+4 | ||
86 | #endif /* MAX_COPY_PREFETCH */ | ||
87 | #endif /* CONFIG_8xx */ | ||
88 | |||
89 | li r0,4096/CACHE_LINE_SIZE | ||
90 | mtctr r0 | ||
91 | 1: | ||
92 | #ifndef CONFIG_8xx | ||
93 | dcbt r11,r4 | ||
94 | dcbz r5,r3 | ||
95 | #endif | ||
96 | COPY_16_BYTES | ||
97 | #if CACHE_LINE_SIZE >= 32 | ||
98 | COPY_16_BYTES | ||
99 | #if CACHE_LINE_SIZE >= 64 | ||
100 | COPY_16_BYTES | ||
101 | COPY_16_BYTES | ||
102 | #if CACHE_LINE_SIZE >= 128 | ||
103 | COPY_16_BYTES | ||
104 | COPY_16_BYTES | ||
105 | COPY_16_BYTES | ||
106 | COPY_16_BYTES | ||
107 | #endif | ||
108 | #endif | ||
109 | #endif | ||
110 | bdnz 1b | ||
111 | blr | ||
diff --git a/arch/um/sys-ppc/miscthings.c b/arch/um/sys-ppc/miscthings.c deleted file mode 100644 index 25908d26ce07..000000000000 --- a/arch/um/sys-ppc/miscthings.c +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | #include <linux/threads.h> | ||
2 | #include <linux/stddef.h> // for NULL | ||
3 | #include <linux/elf.h> // for AT_NULL | ||
4 | |||
5 | /* The following function nicked from arch/ppc/kernel/process.c and | ||
6 | * adapted slightly */ | ||
7 | /* | ||
8 | * XXX ld.so expects the auxiliary table to start on | ||
9 | * a 16-byte boundary, so we have to find it and | ||
10 | * move it up. :-( | ||
11 | */ | ||
12 | void shove_aux_table(unsigned long sp) | ||
13 | { | ||
14 | int argc; | ||
15 | char *p; | ||
16 | unsigned long e; | ||
17 | unsigned long aux_start, offset; | ||
18 | |||
19 | argc = *(int *)sp; | ||
20 | sp += sizeof(int) + (argc + 1) * sizeof(char *); | ||
21 | /* skip over the environment pointers */ | ||
22 | do { | ||
23 | p = *(char **)sp; | ||
24 | sp += sizeof(char *); | ||
25 | } while (p != NULL); | ||
26 | aux_start = sp; | ||
27 | /* skip to the end of the auxiliary table */ | ||
28 | do { | ||
29 | e = *(unsigned long *)sp; | ||
30 | sp += 2 * sizeof(unsigned long); | ||
31 | } while (e != AT_NULL); | ||
32 | offset = ((aux_start + 15) & ~15) - aux_start; | ||
33 | if (offset != 0) { | ||
34 | do { | ||
35 | sp -= sizeof(unsigned long); | ||
36 | e = *(unsigned long *)sp; | ||
37 | *(unsigned long *)(sp + offset) = e; | ||
38 | } while (sp > aux_start); | ||
39 | } | ||
40 | } | ||
41 | /* END stuff taken from arch/ppc/kernel/process.c */ | ||
42 | |||
diff --git a/arch/um/sys-ppc/ptrace.c b/arch/um/sys-ppc/ptrace.c deleted file mode 100644 index 8245df41b201..000000000000 --- a/arch/um/sys-ppc/ptrace.c +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | #include <linux/sched.h> | ||
2 | #include "asm/ptrace.h" | ||
3 | |||
4 | int putreg(struct task_struct *child, unsigned long regno, | ||
5 | unsigned long value) | ||
6 | { | ||
7 | child->thread.process_regs.regs[regno >> 2] = value; | ||
8 | return 0; | ||
9 | } | ||
10 | |||
11 | int poke_user(struct task_struct *child, long addr, long data) | ||
12 | { | ||
13 | if ((addr & 3) || addr < 0) | ||
14 | return -EIO; | ||
15 | |||
16 | if (addr < MAX_REG_OFFSET) | ||
17 | return putreg(child, addr, data); | ||
18 | |||
19 | else if((addr >= offsetof(struct user, u_debugreg[0])) && | ||
20 | (addr <= offsetof(struct user, u_debugreg[7]))){ | ||
21 | addr -= offsetof(struct user, u_debugreg[0]); | ||
22 | addr = addr >> 2; | ||
23 | if((addr == 4) || (addr == 5)) return -EIO; | ||
24 | child->thread.arch.debugregs[addr] = data; | ||
25 | return 0; | ||
26 | } | ||
27 | return -EIO; | ||
28 | } | ||
29 | |||
30 | unsigned long getreg(struct task_struct *child, unsigned long regno) | ||
31 | { | ||
32 | unsigned long retval = ~0UL; | ||
33 | |||
34 | retval &= child->thread.process_regs.regs[regno >> 2]; | ||
35 | return retval; | ||
36 | } | ||
37 | |||
38 | int peek_user(struct task_struct *child, long addr, long data) | ||
39 | { | ||
40 | /* read the word at location addr in the USER area. */ | ||
41 | unsigned long tmp; | ||
42 | |||
43 | if ((addr & 3) || addr < 0) | ||
44 | return -EIO; | ||
45 | |||
46 | tmp = 0; /* Default return condition */ | ||
47 | if(addr < MAX_REG_OFFSET){ | ||
48 | tmp = getreg(child, addr); | ||
49 | } | ||
50 | else if((addr >= offsetof(struct user, u_debugreg[0])) && | ||
51 | (addr <= offsetof(struct user, u_debugreg[7]))){ | ||
52 | addr -= offsetof(struct user, u_debugreg[0]); | ||
53 | addr = addr >> 2; | ||
54 | tmp = child->thread.arch.debugregs[addr]; | ||
55 | } | ||
56 | return put_user(tmp, (unsigned long *) data); | ||
57 | } | ||
58 | |||
diff --git a/arch/um/sys-ppc/ptrace_user.c b/arch/um/sys-ppc/ptrace_user.c deleted file mode 100644 index 4601b9296aa7..000000000000 --- a/arch/um/sys-ppc/ptrace_user.c +++ /dev/null | |||
@@ -1,29 +0,0 @@ | |||
1 | #include <errno.h> | ||
2 | #include <asm/ptrace.h> | ||
3 | #include <sysdep/ptrace.h> | ||
4 | |||
5 | int ptrace_getregs(long pid, unsigned long *regs_out) | ||
6 | { | ||
7 | int i; | ||
8 | for (i=0; i < sizeof(struct sys_pt_regs)/sizeof(PPC_REG); ++i) { | ||
9 | errno = 0; | ||
10 | regs_out->regs[i] = ptrace(PTRACE_PEEKUSR, pid, i*4, 0); | ||
11 | if (errno) { | ||
12 | return -errno; | ||
13 | } | ||
14 | } | ||
15 | return 0; | ||
16 | } | ||
17 | |||
18 | int ptrace_setregs(long pid, unsigned long *regs_in) | ||
19 | { | ||
20 | int i; | ||
21 | for (i=0; i < sizeof(struct sys_pt_regs)/sizeof(PPC_REG); ++i) { | ||
22 | if (i != 34 /* FIXME: PT_ORIG_R3 */ && i <= PT_MQ) { | ||
23 | if (ptrace(PTRACE_POKEUSR, pid, i*4, regs_in->regs[i]) < 0) { | ||
24 | return -errno; | ||
25 | } | ||
26 | } | ||
27 | } | ||
28 | return 0; | ||
29 | } | ||
diff --git a/arch/um/sys-ppc/shared/sysdep/ptrace.h b/arch/um/sys-ppc/shared/sysdep/ptrace.h deleted file mode 100644 index efe0c1a3ea9c..000000000000 --- a/arch/um/sys-ppc/shared/sysdep/ptrace.h +++ /dev/null | |||
@@ -1,93 +0,0 @@ | |||
1 | /* | ||
2 | * Licensed under the GPL | ||
3 | */ | ||
4 | |||
5 | #ifndef __SYS_PTRACE_PPC_H | ||
6 | #define __SYS_PTRACE_PPC_H | ||
7 | |||
8 | #include <linux/types.h> | ||
9 | |||
10 | /* the following taken from <asm-ppc/ptrace.h> */ | ||
11 | |||
12 | #ifdef CONFIG_PPC64 | ||
13 | #define PPC_REG unsigned long /*long*/ | ||
14 | #else | ||
15 | #define PPC_REG unsigned long | ||
16 | #endif | ||
17 | struct sys_pt_regs_s { | ||
18 | PPC_REG gpr[32]; | ||
19 | PPC_REG nip; | ||
20 | PPC_REG msr; | ||
21 | PPC_REG orig_gpr3; /* Used for restarting system calls */ | ||
22 | PPC_REG ctr; | ||
23 | PPC_REG link; | ||
24 | PPC_REG xer; | ||
25 | PPC_REG ccr; | ||
26 | PPC_REG mq; /* 601 only (not used at present) */ | ||
27 | /* Used on APUS to hold IPL value. */ | ||
28 | PPC_REG trap; /* Reason for being here */ | ||
29 | PPC_REG dar; /* Fault registers */ | ||
30 | PPC_REG dsisr; | ||
31 | PPC_REG result; /* Result of a system call */ | ||
32 | }; | ||
33 | |||
34 | #define NUM_REGS (sizeof(struct sys_pt_regs_s) / sizeof(PPC_REG)) | ||
35 | |||
36 | struct sys_pt_regs { | ||
37 | PPC_REG regs[sizeof(struct sys_pt_regs_s) / sizeof(PPC_REG)]; | ||
38 | }; | ||
39 | |||
40 | #define UM_MAX_REG (PT_FPR0) | ||
41 | #define UM_MAX_REG_OFFSET (UM_MAX_REG * sizeof(PPC_REG)) | ||
42 | |||
43 | #define EMPTY_REGS { { [ 0 ... NUM_REGS - 1] = 0 } } | ||
44 | |||
45 | #define UM_REG(r, n) ((r)->regs[n]) | ||
46 | |||
47 | #define UM_SYSCALL_RET(r) UM_REG(r, PT_R3) | ||
48 | #define UM_SP(r) UM_REG(r, PT_R1) | ||
49 | #define UM_IP(r) UM_REG(r, PT_NIP) | ||
50 | #define UM_ELF_ZERO(r) UM_REG(r, PT_FPSCR) | ||
51 | #define UM_SYSCALL_NR(r) UM_REG(r, PT_R0) | ||
52 | #define UM_SYSCALL_ARG1(r) UM_REG(r, PT_ORIG_R3) | ||
53 | #define UM_SYSCALL_ARG2(r) UM_REG(r, PT_R4) | ||
54 | #define UM_SYSCALL_ARG3(r) UM_REG(r, PT_R5) | ||
55 | #define UM_SYSCALL_ARG4(r) UM_REG(r, PT_R6) | ||
56 | #define UM_SYSCALL_ARG5(r) UM_REG(r, PT_R7) | ||
57 | #define UM_SYSCALL_ARG6(r) UM_REG(r, PT_R8) | ||
58 | |||
59 | #define UM_SYSCALL_NR_OFFSET (PT_R0 * sizeof(PPC_REG)) | ||
60 | #define UM_SYSCALL_RET_OFFSET (PT_R3 * sizeof(PPC_REG)) | ||
61 | #define UM_SYSCALL_ARG1_OFFSET (PT_R3 * sizeof(PPC_REG)) | ||
62 | #define UM_SYSCALL_ARG2_OFFSET (PT_R4 * sizeof(PPC_REG)) | ||
63 | #define UM_SYSCALL_ARG3_OFFSET (PT_R5 * sizeof(PPC_REG)) | ||
64 | #define UM_SYSCALL_ARG4_OFFSET (PT_R6 * sizeof(PPC_REG)) | ||
65 | #define UM_SYSCALL_ARG5_OFFSET (PT_R7 * sizeof(PPC_REG)) | ||
66 | #define UM_SYSCALL_ARG6_OFFSET (PT_R8 * sizeof(PPC_REG)) | ||
67 | #define UM_SP_OFFSET (PT_R1 * sizeof(PPC_REG)) | ||
68 | #define UM_IP_OFFSET (PT_NIP * sizeof(PPC_REG)) | ||
69 | #define UM_ELF_ZERO_OFFSET (PT_R3 * sizeof(PPC_REG)) | ||
70 | |||
71 | #define UM_SET_SYSCALL_RETURN(_regs, result) \ | ||
72 | do { \ | ||
73 | if (result < 0) { \ | ||
74 | (_regs)->regs[PT_CCR] |= 0x10000000; \ | ||
75 | UM_SYSCALL_RET((_regs)) = -result; \ | ||
76 | } else { \ | ||
77 | UM_SYSCALL_RET((_regs)) = result; \ | ||
78 | } \ | ||
79 | } while(0) | ||
80 | |||
81 | extern void shove_aux_table(unsigned long sp); | ||
82 | #define UM_FIX_EXEC_STACK(sp) shove_aux_table(sp); | ||
83 | |||
84 | /* These aren't actually defined. The undefs are just to make sure | ||
85 | * everyone's clear on the concept. | ||
86 | */ | ||
87 | #undef UML_HAVE_GETREGS | ||
88 | #undef UML_HAVE_GETFPREGS | ||
89 | #undef UML_HAVE_SETREGS | ||
90 | #undef UML_HAVE_SETFPREGS | ||
91 | |||
92 | #endif | ||
93 | |||
diff --git a/arch/um/sys-ppc/shared/sysdep/sigcontext.h b/arch/um/sys-ppc/shared/sysdep/sigcontext.h deleted file mode 100644 index b7286f0a1e00..000000000000 --- a/arch/um/sys-ppc/shared/sysdep/sigcontext.h +++ /dev/null | |||
@@ -1,52 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef __SYS_SIGCONTEXT_PPC_H | ||
7 | #define __SYS_SIGCONTEXT_PPC_H | ||
8 | |||
9 | #define DSISR_WRITE 0x02000000 | ||
10 | |||
11 | #define SC_FAULT_ADDR(sc) ({ \ | ||
12 | struct sigcontext *_sc = (sc); \ | ||
13 | long retval = -1; \ | ||
14 | switch (_sc->regs->trap) { \ | ||
15 | case 0x300: \ | ||
16 | /* data exception */ \ | ||
17 | retval = _sc->regs->dar; \ | ||
18 | break; \ | ||
19 | case 0x400: \ | ||
20 | /* instruction exception */ \ | ||
21 | retval = _sc->regs->nip; \ | ||
22 | break; \ | ||
23 | default: \ | ||
24 | panic("SC_FAULT_ADDR: unhandled trap type\n"); \ | ||
25 | } \ | ||
26 | retval; \ | ||
27 | }) | ||
28 | |||
29 | #define SC_FAULT_WRITE(sc) ({ \ | ||
30 | struct sigcontext *_sc = (sc); \ | ||
31 | long retval = -1; \ | ||
32 | switch (_sc->regs->trap) { \ | ||
33 | case 0x300: \ | ||
34 | /* data exception */ \ | ||
35 | retval = !!(_sc->regs->dsisr & DSISR_WRITE); \ | ||
36 | break; \ | ||
37 | case 0x400: \ | ||
38 | /* instruction exception: not a write */ \ | ||
39 | retval = 0; \ | ||
40 | break; \ | ||
41 | default: \ | ||
42 | panic("SC_FAULT_ADDR: unhandled trap type\n"); \ | ||
43 | } \ | ||
44 | retval; \ | ||
45 | }) | ||
46 | |||
47 | #define SC_IP(sc) ((sc)->regs->nip) | ||
48 | #define SC_SP(sc) ((sc)->regs->gpr[1]) | ||
49 | #define SEGV_IS_FIXABLE(sc) (1) | ||
50 | |||
51 | #endif | ||
52 | |||
diff --git a/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h b/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h deleted file mode 100644 index d9fbbac10de0..000000000000 --- a/arch/um/sys-ppc/shared/sysdep/skas_ptrace.h +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #ifndef __SYSDEP_PPC_SKAS_PTRACE_H | ||
7 | #define __SYSDEP_PPC_SKAS_PTRACE_H | ||
8 | |||
9 | struct ptrace_faultinfo { | ||
10 | int is_write; | ||
11 | unsigned long addr; | ||
12 | }; | ||
13 | |||
14 | struct ptrace_ldt { | ||
15 | int func; | ||
16 | void *ptr; | ||
17 | unsigned long bytecount; | ||
18 | }; | ||
19 | |||
20 | #define PTRACE_LDT 54 | ||
21 | |||
22 | #endif | ||
diff --git a/arch/um/sys-ppc/shared/sysdep/syscalls.h b/arch/um/sys-ppc/shared/sysdep/syscalls.h deleted file mode 100644 index 1ff81552251c..000000000000 --- a/arch/um/sys-ppc/shared/sysdep/syscalls.h +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000 Jeff Dike (jdike@karaya.com) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | typedef long syscall_handler_t(unsigned long arg1, unsigned long arg2, | ||
7 | unsigned long arg3, unsigned long arg4, | ||
8 | unsigned long arg5, unsigned long arg6); | ||
9 | |||
10 | #define EXECUTE_SYSCALL(syscall, regs) \ | ||
11 | (*sys_call_table[syscall])(UM_SYSCALL_ARG1(®s), \ | ||
12 | UM_SYSCALL_ARG2(®s), \ | ||
13 | UM_SYSCALL_ARG3(®s), \ | ||
14 | UM_SYSCALL_ARG4(®s), \ | ||
15 | UM_SYSCALL_ARG5(®s), \ | ||
16 | UM_SYSCALL_ARG6(®s)) | ||
17 | |||
18 | extern syscall_handler_t sys_mincore; | ||
19 | extern syscall_handler_t sys_madvise; | ||
20 | |||
21 | /* old_mmap needs the correct prototype since syscall_kern.c includes | ||
22 | * this file. | ||
23 | */ | ||
24 | int old_mmap(unsigned long addr, unsigned long len, | ||
25 | unsigned long prot, unsigned long flags, | ||
26 | unsigned long fd, unsigned long offset); | ||
27 | |||
28 | #define ARCH_SYSCALLS \ | ||
29 | [ __NR_modify_ldt ] = sys_ni_syscall, \ | ||
30 | [ __NR_pciconfig_read ] = sys_ni_syscall, \ | ||
31 | [ __NR_pciconfig_write ] = sys_ni_syscall, \ | ||
32 | [ __NR_pciconfig_iobase ] = sys_ni_syscall, \ | ||
33 | [ __NR_pivot_root ] = sys_ni_syscall, \ | ||
34 | [ __NR_multiplexer ] = sys_ni_syscall, \ | ||
35 | [ __NR_mmap ] = old_mmap, \ | ||
36 | [ __NR_madvise ] = sys_madvise, \ | ||
37 | [ __NR_mincore ] = sys_mincore, \ | ||
38 | [ __NR_iopl ] = (syscall_handler_t *) sys_ni_syscall, \ | ||
39 | [ __NR_utimes ] = (syscall_handler_t *) sys_utimes, \ | ||
40 | [ __NR_fadvise64 ] = (syscall_handler_t *) sys_fadvise64, | ||
41 | |||
42 | #define LAST_ARCH_SYSCALL __NR_fadvise64 | ||
43 | |||
diff --git a/arch/um/sys-ppc/sigcontext.c b/arch/um/sys-ppc/sigcontext.c deleted file mode 100644 index aac6c83fe44e..000000000000 --- a/arch/um/sys-ppc/sigcontext.c +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | #include "asm/ptrace.h" | ||
2 | #include "asm/sigcontext.h" | ||
3 | #include <sysdep/ptrace.h> | ||
4 | |||
diff --git a/arch/um/sys-ppc/sysrq.c b/arch/um/sys-ppc/sysrq.c deleted file mode 100644 index 1ff1ad7f27da..000000000000 --- a/arch/um/sys-ppc/sysrq.c +++ /dev/null | |||
@@ -1,33 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2001 Chris Emerson (cemerson@chiark.greenend.org.uk) | ||
3 | * Licensed under the GPL | ||
4 | */ | ||
5 | |||
6 | #include <linux/kernel.h> | ||
7 | #include <linux/smp.h> | ||
8 | #include "asm/ptrace.h" | ||
9 | #include "sysrq.h" | ||
10 | |||
11 | void show_regs(struct pt_regs_subarch *regs) | ||
12 | { | ||
13 | printk("\n"); | ||
14 | show_regs_print_info(KERN_DEFAULT); | ||
15 | |||
16 | printk("show_regs(): insert regs here.\n"); | ||
17 | #if 0 | ||
18 | printk("\n"); | ||
19 | printk("EIP: %04x:[<%08lx>] CPU: %d",0xffff & regs->xcs, regs->eip, | ||
20 | smp_processor_id()); | ||
21 | if (regs->xcs & 3) | ||
22 | printk(" ESP: %04x:%08lx",0xffff & regs->xss, regs->esp); | ||
23 | printk(" EFLAGS: %08lx\n", regs->eflags); | ||
24 | printk("EAX: %08lx EBX: %08lx ECX: %08lx EDX: %08lx\n", | ||
25 | regs->eax, regs->ebx, regs->ecx, regs->edx); | ||
26 | printk("ESI: %08lx EDI: %08lx EBP: %08lx", | ||
27 | regs->esi, regs->edi, regs->ebp); | ||
28 | printk(" DS: %04x ES: %04x\n", | ||
29 | 0xffff & regs->xds, 0xffff & regs->xes); | ||
30 | #endif | ||
31 | |||
32 | show_trace(current, ®s->gpr[1]); | ||
33 | } | ||