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.
 
    #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);
    
 
    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 */