Subversion Repositories HelenOS

Rev

Rev 3022 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3022 Rev 4055
Line 37... Line 37...
37
 
37
 
38
/** Save FPU (mmx, sse) context using fxsave instruction */
38
/** Save FPU (mmx, sse) context using fxsave instruction */
39
void fpu_context_save(fpu_context_t *fctx)
39
void fpu_context_save(fpu_context_t *fctx)
40
{
40
{
41
    asm volatile (
41
    asm volatile (
42
        "fxsave %0"
42
        "fxsave %[fctx]\n"
43
        : "=m"(*fctx)
43
        : [fctx] "=m" (*fctx)
44
        );
44
    );
45
}
45
}
46
 
46
 
47
/** Restore FPU (mmx,sse) context using fxrstor instruction */
47
/** Restore FPU (mmx,sse) context using fxrstor instruction */
48
void fpu_context_restore(fpu_context_t *fctx)
48
void fpu_context_restore(fpu_context_t *fctx)
49
{
49
{
50
    asm volatile (
50
    asm volatile (
51
        "fxrstor %0"
51
        "fxrstor %[fctx]\n"
52
        : "=m"(*fctx)
52
        : [fctx] "=m" (*fctx)
53
        );
53
    );
54
}
54
}
55
 
55
 
56
void fpu_init()
56
void fpu_init()
57
{
57
{
58
    /* TODO: Zero all SSE, MMX etc. registers */
58
    /* TODO: Zero all SSE, MMX etc. registers */
59
    asm volatile (
59
    asm volatile (
60
        "fninit;"
60
        "fninit\n"
61
    );
61
    );
62
}
62
}
63
 
63
 
64
/** @}
64
/** @}
65
 */
65
 */