Question: I'm trying to create a button that hrefs to another page. Here's the HTML:

```
<div class="new_user"> 
<button id="buton_user_nou">Creaza User
</button>
</div>

```

and jQuery:

```
$('#buton_user_nou').click(function(){
location.href='/register.htm'
})

```

The button is completely inactive, in all browsers. It doesn't even highlight when hovering...
Any pointers please?

Answer: 
I'm commenting the [asm/i387.h](http://lxr.free-electrons.com/source/arch/x86/include/asm/i387.h?v=3.2#L310) Linux source code (version 3.2) with what I understand to be occurring.

```
static inline void kernel_fpu_begin(void)
{
        /* get thread_info structure for current thread */
        struct thread_info *me = current_thread_info();

        /* preempt_count is incremented by 1
         * (preempt_count > 0 disables preemption,
         *  while preempt_count < 0 signifies a bug) */
        preempt_disable();

        /* check if FPU has been used before by this thread */
        if (me->status & TS_USEDFPU)
                /* save the FPU state to prevent clobbering of
                 * FPU registers, then reset the TS_USEDFPU flag */
                __save_init_fpu(me->task);
        else
                /* clear the CR0.TS bit to prevent
                 * unnecessary FPU task context saving */
                clts();
}

static inline void kernel_fpu_end(void)
{
        /* set CR0.TS bit (signifying the processor switched
         * to a new task) to enable FPU task context saving */
        stts();

        /* attempt to re-enable preemption
         * (preempt_count is decremented by 1);
         * reschedule thread if needed
         * (thread will not be preempted if preempt_count != 0) */
        preempt_enable();
}

```

The `FXSAVE` instruction is typically used to save the FPU state. However, I believe the memory destination stays the same every time `kernel_fpu_begin` is called within the same thread; unfortunately that would mean that `FXSAVE` will overwrite the previously saved FPU state.

Therefore I suspect that you **CANNOT** safely nest `kernel_fpu_begin` calls.

What I still cannot understand though is how the FPU state is being restored, since the `kernel_fpu_end` call does not appear to execute a `FXRSTOR` instruction. Also, why is the `CR0.TS` bit set in the `kernel_fpu_end` call if we are no longer using the FPU?
Yes, as you defined some double variable & `foo` is also returning the double value; you have to use `kernel_fpu_begin` and `kernel_fpu_end` calls outside `foo` [also.](http://lists.kernelnewbies.org/pipermail/kernelnewbies/2012-November/006462.html)

---

[Similar Problem](http://www.serverphorums.com/read.php?12,409657) also have this which have certain instances where you can code without using `kernel_fpu_begin` and `kernel_fpu_end` calls.