//kernel/trunk/arch/ia32/include/interrupt.h |
---|
84,6 → 84,7 |
extern void gp_fault(int n, istate_t *istate); |
extern void nm_fault(int n, istate_t *istate); |
extern void ss_fault(int n, istate_t *istate); |
extern void simd_fp_exception(int n, istate_t *istate); |
extern void page_fault(int n, istate_t *istate); |
extern void syscall(int n, istate_t *istate); |
extern void tlb_shootdown_ipi(int n, istate_t *istate); |
//kernel/trunk/arch/ia32/include/fpu_context.h |
---|
34,6 → 34,10 |
#define ARCH_HAS_FPU |
#define FPU_CONTEXT_ALIGN 16 |
void fpu_fxsr(void); |
void fpu_fsr(void); |
struct fpu_context { |
/* TODO: We need malloc that aligns structures on 16-byte boundary */ |
__u8 fpu[512]; /* FXSAVE & FXRSTOR storage area */ |
//kernel/trunk/arch/ia32/include/cpuid.h |
---|
38,6 → 38,34 |
__u32 cpuid_edx; |
} __attribute__ ((packed)); |
struct __cpuid_extended_feature_info { |
unsigned sse3 : 1; |
unsigned : 31; |
} __attribute__ ((packed)); |
typedef union cpuid_extended_feature_info |
{ |
struct __cpuid_extended_feature_info bits; |
__u32 word; |
}cpuid_extended_feature_info; |
struct __cpuid_feature_info { |
unsigned : 23; |
unsigned mmx : 1; |
unsigned fxsr : 1; |
unsigned sse : 1; |
unsigned sse2 : 1; |
unsigned : 5; |
} __attribute__ ((packed)); |
typedef union cpuid_feature_info |
{ |
struct __cpuid_feature_info bits; |
__u32 word ; |
}cpuid_feature_info; |
static inline __u32 has_cpuid(void) |
{ |
__u32 val, ret; |
//kernel/trunk/arch/ia32/include/cpu.h |
---|
41,4 → 41,7 |
struct tss *tss; |
}; |
#define CR4_OSFXSR_MASK (1<<9) |
#endif |