diff options
Diffstat (limited to 'arch/um/sys-x86_64')
-rw-r--r-- | arch/um/sys-x86_64/Makefile | 6 | ||||
-rw-r--r-- | arch/um/sys-x86_64/delay.c | 33 | ||||
-rw-r--r-- | arch/um/sys-x86_64/ksyms.c | 3 | ||||
-rw-r--r-- | arch/um/sys-x86_64/ptrace.c | 9 | ||||
-rw-r--r-- | arch/um/sys-x86_64/syscalls.c | 17 | ||||
-rw-r--r-- | arch/um/sys-x86_64/sysrq.c | 11 | ||||
-rw-r--r-- | arch/um/sys-x86_64/user-offsets.c | 8 |
7 files changed, 43 insertions, 44 deletions
diff --git a/arch/um/sys-x86_64/Makefile b/arch/um/sys-x86_64/Makefile index 3d7da911cc8c..608466ad6b22 100644 --- a/arch/um/sys-x86_64/Makefile +++ b/arch/um/sys-x86_64/Makefile | |||
@@ -14,11 +14,11 @@ obj-$(CONFIG_MODULES) += module.o um_module.o | |||
14 | 14 | ||
15 | USER_OBJS := ptrace_user.o sigcontext.o | 15 | USER_OBJS := ptrace_user.o sigcontext.o |
16 | 16 | ||
17 | include arch/um/scripts/Makefile.rules | ||
18 | |||
19 | SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c memcpy.S \ | 17 | SYMLINKS = bitops.c csum-copy.S csum-partial.c csum-wrappers.c memcpy.S \ |
20 | semaphore.c thunk.S module.c | 18 | semaphore.c thunk.S module.c |
21 | 19 | ||
20 | include arch/um/scripts/Makefile.rules | ||
21 | |||
22 | bitops.c-dir = lib | 22 | bitops.c-dir = lib |
23 | csum-copy.S-dir = lib | 23 | csum-copy.S-dir = lib |
24 | csum-partial.c-dir = lib | 24 | csum-partial.c-dir = lib |
@@ -28,6 +28,4 @@ semaphore.c-dir = kernel | |||
28 | thunk.S-dir = lib | 28 | thunk.S-dir = lib |
29 | module.c-dir = kernel | 29 | module.c-dir = kernel |
30 | 30 | ||
31 | CFLAGS_csum-partial.o := -Dcsum_partial=arch_csum_partial | ||
32 | |||
33 | subdir- := util | 31 | subdir- := util |
diff --git a/arch/um/sys-x86_64/delay.c b/arch/um/sys-x86_64/delay.c index 651332aeec22..137f4446b439 100644 --- a/arch/um/sys-x86_64/delay.c +++ b/arch/um/sys-x86_64/delay.c | |||
@@ -5,40 +5,37 @@ | |||
5 | * Licensed under the GPL | 5 | * Licensed under the GPL |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include "linux/delay.h" | 8 | #include <linux/module.h> |
9 | #include "asm/processor.h" | 9 | #include <linux/delay.h> |
10 | #include "asm/param.h" | 10 | #include <asm/processor.h> |
11 | #include <asm/param.h> | ||
11 | 12 | ||
12 | void __delay(unsigned long loops) | 13 | void __delay(unsigned long loops) |
13 | { | 14 | { |
14 | unsigned long i; | 15 | unsigned long i; |
15 | 16 | ||
16 | for(i = 0; i < loops; i++) ; | 17 | for(i = 0; i < loops; i++) |
18 | cpu_relax(); | ||
17 | } | 19 | } |
18 | 20 | ||
19 | void __udelay(unsigned long usecs) | 21 | void __udelay(unsigned long usecs) |
20 | { | 22 | { |
21 | int i, n; | 23 | unsigned long i, n; |
22 | 24 | ||
23 | n = (loops_per_jiffy * HZ * usecs) / MILLION; | 25 | n = (loops_per_jiffy * HZ * usecs) / MILLION; |
24 | for(i=0;i<n;i++) ; | 26 | for(i=0;i<n;i++) |
27 | cpu_relax(); | ||
25 | } | 28 | } |
26 | 29 | ||
30 | EXPORT_SYMBOL(__udelay); | ||
31 | |||
27 | void __const_udelay(unsigned long usecs) | 32 | void __const_udelay(unsigned long usecs) |
28 | { | 33 | { |
29 | int i, n; | 34 | unsigned long i, n; |
30 | 35 | ||
31 | n = (loops_per_jiffy * HZ * usecs) / MILLION; | 36 | n = (loops_per_jiffy * HZ * usecs) / MILLION; |
32 | for(i=0;i<n;i++) ; | 37 | for(i=0;i<n;i++) |
38 | cpu_relax(); | ||
33 | } | 39 | } |
34 | 40 | ||
35 | /* | 41 | EXPORT_SYMBOL(__const_udelay); |
36 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
37 | * Emacs will notice this stuff at the end of the file and automatically | ||
38 | * adjust the settings for this buffer only. This must remain at the end | ||
39 | * of the file. | ||
40 | * --------------------------------------------------------------------------- | ||
41 | * Local variables: | ||
42 | * c-file-style: "linux" | ||
43 | * End: | ||
44 | */ | ||
diff --git a/arch/um/sys-x86_64/ksyms.c b/arch/um/sys-x86_64/ksyms.c index a27f0ee6a4f6..859273808203 100644 --- a/arch/um/sys-x86_64/ksyms.c +++ b/arch/um/sys-x86_64/ksyms.c | |||
@@ -16,5 +16,4 @@ EXPORT_SYMBOL(__up_wakeup); | |||
16 | EXPORT_SYMBOL(__memcpy); | 16 | EXPORT_SYMBOL(__memcpy); |
17 | 17 | ||
18 | /* Networking helper routines. */ | 18 | /* Networking helper routines. */ |
19 | /*EXPORT_SYMBOL(csum_partial_copy_from); | 19 | EXPORT_SYMBOL(ip_compute_csum); |
20 | EXPORT_SYMBOL(csum_partial_copy_to);*/ | ||
diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c index b593bb256f2c..74eee5c7c6dd 100644 --- a/arch/um/sys-x86_64/ptrace.c +++ b/arch/um/sys-x86_64/ptrace.c | |||
@@ -5,10 +5,11 @@ | |||
5 | */ | 5 | */ |
6 | 6 | ||
7 | #define __FRAME_OFFSETS | 7 | #define __FRAME_OFFSETS |
8 | #include "asm/ptrace.h" | 8 | #include <asm/ptrace.h> |
9 | #include "linux/sched.h" | 9 | #include <linux/sched.h> |
10 | #include "linux/errno.h" | 10 | #include <linux/errno.h> |
11 | #include "asm/elf.h" | 11 | #include <asm/uaccess.h> |
12 | #include <asm/elf.h> | ||
12 | 13 | ||
13 | /* XXX x86_64 */ | 14 | /* XXX x86_64 */ |
14 | unsigned long not_ss; | 15 | unsigned long not_ss; |
diff --git a/arch/um/sys-x86_64/syscalls.c b/arch/um/sys-x86_64/syscalls.c index dd9914642b8e..6f44f40204ed 100644 --- a/arch/um/sys-x86_64/syscalls.c +++ b/arch/um/sys-x86_64/syscalls.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include "asm/unistd.h" | 15 | #include "asm/unistd.h" |
16 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ | 16 | #include "asm/prctl.h" /* XXX This should get the constants from libc */ |
17 | #include "choose-mode.h" | 17 | #include "choose-mode.h" |
18 | #include "kern.h" | ||
18 | 19 | ||
19 | asmlinkage long sys_uname64(struct new_utsname __user * name) | 20 | asmlinkage long sys_uname64(struct new_utsname __user * name) |
20 | { | 21 | { |
@@ -132,23 +133,27 @@ static long arch_prctl_tt(int code, unsigned long addr) | |||
132 | 133 | ||
133 | #ifdef CONFIG_MODE_SKAS | 134 | #ifdef CONFIG_MODE_SKAS |
134 | 135 | ||
136 | /* XXX: Must also call arch_prctl in the host, beside saving the segment bases! */ | ||
135 | static long arch_prctl_skas(int code, unsigned long addr) | 137 | static long arch_prctl_skas(int code, unsigned long addr) |
136 | { | 138 | { |
137 | long ret = 0; | 139 | long ret = 0; |
138 | 140 | ||
139 | switch(code){ | 141 | switch(code){ |
140 | case ARCH_SET_GS: | ||
141 | current->thread.regs.regs.skas.regs[GS_BASE / sizeof(unsigned long)] = addr; | ||
142 | break; | ||
143 | case ARCH_SET_FS: | 142 | case ARCH_SET_FS: |
144 | current->thread.regs.regs.skas.regs[FS_BASE / sizeof(unsigned long)] = addr; | 143 | current->thread.regs.regs.skas.regs[FS_BASE / sizeof(unsigned long)] = addr; |
145 | break; | 144 | break; |
145 | case ARCH_SET_GS: | ||
146 | current->thread.regs.regs.skas.regs[GS_BASE / sizeof(unsigned long)] = addr; | ||
147 | break; | ||
146 | case ARCH_GET_FS: | 148 | case ARCH_GET_FS: |
147 | ret = put_user(current->thread.regs.regs.skas.regs[GS / sizeof(unsigned long)], &addr); | 149 | ret = put_user(current->thread.regs.regs.skas. |
150 | regs[FS_BASE / sizeof(unsigned long)], | ||
151 | (unsigned long __user *)addr); | ||
148 | break; | 152 | break; |
149 | case ARCH_GET_GS: | 153 | case ARCH_GET_GS: |
150 | ret = put_user(current->thread.regs.regs.skas.regs[FS / sizeof(unsigned \ | 154 | ret = put_user(current->thread.regs.regs.skas. |
151 | long)], &addr); | 155 | regs[GS_BASE / sizeof(unsigned long)], |
156 | (unsigned long __user *)addr); | ||
152 | break; | 157 | break; |
153 | default: | 158 | default: |
154 | ret = -EINVAL; | 159 | ret = -EINVAL; |
diff --git a/arch/um/sys-x86_64/sysrq.c b/arch/um/sys-x86_64/sysrq.c index ddf74691a610..d0a25af19a5b 100644 --- a/arch/um/sys-x86_64/sysrq.c +++ b/arch/um/sys-x86_64/sysrq.c | |||
@@ -36,14 +36,5 @@ void __show_regs(struct pt_regs * regs) | |||
36 | void show_regs(struct pt_regs *regs) | 36 | void show_regs(struct pt_regs *regs) |
37 | { | 37 | { |
38 | __show_regs(regs); | 38 | __show_regs(regs); |
39 | show_trace((unsigned long *) ®s); | 39 | show_trace(current, (unsigned long *) ®s); |
40 | } | 40 | } |
41 | |||
42 | /* Emacs will notice this stuff at the end of the file and automatically | ||
43 | * adjust the settings for this buffer only. This must remain at the end | ||
44 | * of the file. | ||
45 | * --------------------------------------------------------------------------- | ||
46 | * Local variables: | ||
47 | * c-file-style: "linux" | ||
48 | * End: | ||
49 | */ | ||
diff --git a/arch/um/sys-x86_64/user-offsets.c b/arch/um/sys-x86_64/user-offsets.c index 5e14792e4838..513d17ceafd4 100644 --- a/arch/um/sys-x86_64/user-offsets.c +++ b/arch/um/sys-x86_64/user-offsets.c | |||
@@ -3,6 +3,14 @@ | |||
3 | #include <signal.h> | 3 | #include <signal.h> |
4 | #define __FRAME_OFFSETS | 4 | #define __FRAME_OFFSETS |
5 | #include <asm/ptrace.h> | 5 | #include <asm/ptrace.h> |
6 | #include <asm/types.h> | ||
7 | /* For some reason, x86_64 defines u64 and u32 only in <pci/types.h>, which I | ||
8 | * refuse to include here, even though they're used throughout the headers. | ||
9 | * These are used in asm/user.h, and that include can't be avoided because of | ||
10 | * the sizeof(struct user_regs_struct) below. | ||
11 | */ | ||
12 | typedef __u64 u64; | ||
13 | typedef __u32 u32; | ||
6 | #include <asm/user.h> | 14 | #include <asm/user.h> |
7 | 15 | ||
8 | #define DEFINE(sym, val) \ | 16 | #define DEFINE(sym, val) \ |