diff options
Diffstat (limited to 'kernel/arch/x86/um/asm')
-rw-r--r-- | kernel/arch/x86/um/asm/barrier.h | 16 | ||||
-rw-r--r-- | kernel/arch/x86/um/asm/checksum.h | 1 | ||||
-rw-r--r-- | kernel/arch/x86/um/asm/elf.h | 2 | ||||
-rw-r--r-- | kernel/arch/x86/um/asm/processor.h | 2 | ||||
-rw-r--r-- | kernel/arch/x86/um/asm/segment.h | 8 | ||||
-rw-r--r-- | kernel/arch/x86/um/asm/syscall.h | 4 |
6 files changed, 17 insertions, 16 deletions
diff --git a/kernel/arch/x86/um/asm/barrier.h b/kernel/arch/x86/um/asm/barrier.h index 7e8a1a650..755481f14 100644 --- a/kernel/arch/x86/um/asm/barrier.h +++ b/kernel/arch/x86/um/asm/barrier.h @@ -39,22 +39,10 @@ #define smp_mb() barrier() #define smp_rmb() barrier() #define smp_wmb() barrier() -#define set_mb(var, value) do { var = value; barrier(); } while (0) + +#define smp_store_mb(var, value) do { WRITE_ONCE(var, value); barrier(); } while (0) #define read_barrier_depends() do { } while (0) #define smp_read_barrier_depends() do { } while (0) -/* - * Stop RDTSC speculation. This is needed when you need to use RDTSC - * (or get_cycles or vread that possibly accesses the TSC) in a defined - * code region. - * - * (Could use an alternative three way for this if there was one.) - */ -static inline void rdtsc_barrier(void) -{ - alternative_2("", "mfence", X86_FEATURE_MFENCE_RDTSC, - "lfence", X86_FEATURE_LFENCE_RDTSC); -} - #endif diff --git a/kernel/arch/x86/um/asm/checksum.h b/kernel/arch/x86/um/asm/checksum.h index 4b181b744..ee940185e 100644 --- a/kernel/arch/x86/um/asm/checksum.h +++ b/kernel/arch/x86/um/asm/checksum.h @@ -3,6 +3,7 @@ #include <linux/string.h> #include <linux/in6.h> +#include <linux/uaccess.h> /* * computes the checksum of a memory block at buff, length len, diff --git a/kernel/arch/x86/um/asm/elf.h b/kernel/arch/x86/um/asm/elf.h index 0a656b727..548197212 100644 --- a/kernel/arch/x86/um/asm/elf.h +++ b/kernel/arch/x86/um/asm/elf.h @@ -200,8 +200,6 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef struct user_i387_struct elf_fpregset_t; -#define task_pt_regs(t) (&(t)->thread.regs) - struct task_struct; extern int elf_core_copy_fpregs(struct task_struct *t, elf_fpregset_t *fpu); diff --git a/kernel/arch/x86/um/asm/processor.h b/kernel/arch/x86/um/asm/processor.h index 2a206d2b1..233ee09c1 100644 --- a/kernel/arch/x86/um/asm/processor.h +++ b/kernel/arch/x86/um/asm/processor.h @@ -28,6 +28,8 @@ static inline void rep_nop(void) #define cpu_relax() rep_nop() #define cpu_relax_lowlatency() cpu_relax() +#define task_pt_regs(t) (&(t)->thread.regs) + #include <asm/processor-generic.h> #endif diff --git a/kernel/arch/x86/um/asm/segment.h b/kernel/arch/x86/um/asm/segment.h index 45183fcd1..41dd5e1f3 100644 --- a/kernel/arch/x86/um/asm/segment.h +++ b/kernel/arch/x86/um/asm/segment.h @@ -7,4 +7,12 @@ extern int host_gdt_entry_tls_min; #define GDT_ENTRY_TLS_MIN host_gdt_entry_tls_min #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1) +typedef struct { + unsigned long seg; +} mm_segment_t; + +#define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) +#define KERNEL_DS MAKE_MM_SEG(~0UL) +#define USER_DS MAKE_MM_SEG(TASK_SIZE) + #endif diff --git a/kernel/arch/x86/um/asm/syscall.h b/kernel/arch/x86/um/asm/syscall.h index 9fe77b7b5..81d6562ce 100644 --- a/kernel/arch/x86/um/asm/syscall.h +++ b/kernel/arch/x86/um/asm/syscall.h @@ -3,6 +3,10 @@ #include <uapi/linux/audit.h> +typedef asmlinkage long (*sys_call_ptr_t)(unsigned long, unsigned long, + unsigned long, unsigned long, + unsigned long, unsigned long); + static inline int syscall_get_arch(void) { #ifdef CONFIG_X86_32 |