diff options
author | Al Viro <viro@ftp.linux.org.uk> | 2011-08-18 15:06:39 -0400 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2011-11-02 09:15:05 -0400 |
commit | 5c48b108ecbf6505d929e64d50dace13ac2bdf34 (patch) | |
tree | 016904f84fbe05aa301c5cdfe712d90f6bb828fe /arch/x86/um/asm/processor_64.h | |
parent | 7bbe7204e93734fe79d8aac3e08a7cb4624b5004 (diff) |
um: take arch/um/sys-x86 to arch/x86/um
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/x86/um/asm/processor_64.h')
-rw-r--r-- | arch/x86/um/asm/processor_64.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/arch/x86/um/asm/processor_64.h b/arch/x86/um/asm/processor_64.h new file mode 100644 index 000000000000..6db812b24f48 --- /dev/null +++ b/arch/x86/um/asm/processor_64.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * Copyright 2003 PathScale, Inc. | ||
3 | * | ||
4 | * Licensed under the GPL | ||
5 | */ | ||
6 | |||
7 | #ifndef __UM_PROCESSOR_X86_64_H | ||
8 | #define __UM_PROCESSOR_X86_64_H | ||
9 | |||
10 | struct arch_thread { | ||
11 | unsigned long debugregs[8]; | ||
12 | int debugregs_seq; | ||
13 | unsigned long fs; | ||
14 | struct faultinfo faultinfo; | ||
15 | }; | ||
16 | |||
17 | /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */ | ||
18 | static inline void rep_nop(void) | ||
19 | { | ||
20 | __asm__ __volatile__("rep;nop": : :"memory"); | ||
21 | } | ||
22 | |||
23 | #define cpu_relax() rep_nop() | ||
24 | |||
25 | #define INIT_ARCH_THREAD { .debugregs = { [ 0 ... 7 ] = 0 }, \ | ||
26 | .debugregs_seq = 0, \ | ||
27 | .fs = 0, \ | ||
28 | .faultinfo = { 0, 0, 0 } } | ||
29 | |||
30 | static inline void arch_flush_thread(struct arch_thread *thread) | ||
31 | { | ||
32 | } | ||
33 | |||
34 | static inline void arch_copy_thread(struct arch_thread *from, | ||
35 | struct arch_thread *to) | ||
36 | { | ||
37 | to->fs = from->fs; | ||
38 | } | ||
39 | |||
40 | #include <asm/user.h> | ||
41 | |||
42 | #define current_text_addr() \ | ||
43 | ({ void *pc; __asm__("movq $1f,%0\n1:":"=g" (pc)); pc; }) | ||
44 | |||
45 | #define ARCH_IS_STACKGROW(address) \ | ||
46 | (address + 128 >= UPT_SP(¤t->thread.regs.regs)) | ||
47 | |||
48 | #define KSTK_EIP(tsk) KSTK_REG(tsk, RIP) | ||
49 | #define KSTK_ESP(tsk) KSTK_REG(tsk, RSP) | ||
50 | |||
51 | #endif | ||