Merge branches 'x86/prototypes', 'x86/x2apic' and 'x86/debug' into x86/core
authorIngo Molnar <mingo@elte.hu>
Thu, 14 Aug 2008 12:58:22 +0000 (14:58 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 14 Aug 2008 12:58:22 +0000 (14:58 +0200)
23 files changed:
1  2  3  4 
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/setup_percpu.c
arch/x86/kernel/signal_64.c
arch/x86/kernel/smpboot.c
arch/x86/mach-default/setup.c
include/asm-x86/apic.h
include/asm-x86/e820.h
include/asm-x86/hw_irq.h
include/asm-x86/i387.h
include/asm-x86/io.h
include/asm-x86/io_64.h
include/asm-x86/page_32.h
include/asm-x86/page_64.h
include/asm-x86/pgtable.h
include/asm-x86/pgtable_32.h
include/asm-x86/processor.h
include/asm-x86/ptrace.h
include/asm-x86/setup.h
include/asm-x86/signal.h
include/asm-x86/smp.h
include/asm-x86/time.h
include/asm-x86/timer.h
include/asm-x86/traps.h

Simple merge
Simple merge
@@@@@ -53,68 -54,59 -53,59 -53,6 +54,68 @@@@@ sys_sigaltstack(const stack_t __user *u
        return do_sigaltstack(uss, uoss, regs->sp);
    }
    
 --     return restore_fpu_checking((__force struct i387_fxsave_struct *)buf);
   +/*
   + * Signal frame handlers.
   + */
   +
   +static inline int save_i387(struct _fpstate __user *buf)
   +{
   +    struct task_struct *tsk = current;
   +    int err = 0;
   +
   +    BUILD_BUG_ON(sizeof(struct user_i387_struct) !=
   +                    sizeof(tsk->thread.xstate->fxsave));
   +
   +    if ((unsigned long)buf % 16)
   +            printk("save_i387: bad fpstate %p\n", buf);
   +
   +    if (!used_math())
   +            return 0;
   +    clear_used_math(); /* trigger finit */
   +    if (task_thread_info(tsk)->status & TS_USEDFPU) {
   +            err = save_i387_checking((struct i387_fxsave_struct __user *)
   +                                     buf);
   +            if (err)
   +                    return err;
   +            task_thread_info(tsk)->status &= ~TS_USEDFPU;
   +            stts();
   +    } else {
   +            if (__copy_to_user(buf, &tsk->thread.xstate->fxsave,
   +                               sizeof(struct i387_fxsave_struct)))
   +                    return -1;
   +    }
   +    return 1;
   +}
   +
   +/*
   + * This restores directly out of user space. Exceptions are handled.
   + */
   +static inline int restore_i387(struct _fpstate __user *buf)
   +{
   +    struct task_struct *tsk = current;
   +    int err;
   +
   +    if (!used_math()) {
   +            err = init_fpu(tsk);
   +            if (err)
   +                    return err;
   +    }
   +
   +    if (!(task_thread_info(current)->status & TS_USEDFPU)) {
   +            clts();
   +            task_thread_info(current)->status |= TS_USEDFPU;
   +    }
 +++    err = restore_fpu_checking((__force struct i387_fxsave_struct *)buf);
 +++    if (unlikely(err)) {
 +++            /*
 +++             * Encountered an error while doing the restore from the
 +++             * user buffer, clear the fpu state.
 +++             */
 +++            clear_fpu(tsk);
 +++            clear_used_math();
 +++    }
 +++    return err;
   +}
    
    /*
     * Do a signal return; undo the signal stack.
Simple merge
Simple merge
@@@@@ -54,8 -54,13 -54,8 -54,8 +54,13 @@@@@ extern int disable_apic
    #endif
    
    extern int is_vsmp_box(void);
+ ++extern void xapic_wait_icr_idle(void);
+ ++extern u32 safe_xapic_wait_icr_idle(void);
+ ++extern u64 xapic_icr_read(void);
+ ++extern void xapic_icr_write(u32, u32);
+ ++extern int setup_profiling_timer(unsigned int);
    
 - -static inline void native_apic_write(unsigned long reg, u32 v)
 + +static inline void native_apic_mem_write(u32 reg, u32 v)
    {
        volatile u32 *addr = (volatile u32 *)(APIC_BASE + reg);
    
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
@@@@@ -62,5 -64,7 -62,5 -62,5 +64,7 @@@@@ asmlinkage void do_coprocessor_error(st
    asmlinkage void do_simd_coprocessor_error(struct pt_regs *);
    asmlinkage void do_spurious_interrupt_bug(struct pt_regs *);
    
+ ++asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long error_code);
+ ++
    #endif /* CONFIG_X86_32 */
 ---#endif /* _ASM_X86_TRAPS_H */
 +++#endif /* ASM_X86__TRAPS_H */