Fixed FPU for single cpu
This commit is contained in:
parent
72cc01ff48
commit
13bda81ee0
|
|
@ -244,7 +244,7 @@ PUBLIC void fpu_init(void)
|
||||||
|
|
||||||
PUBLIC void save_local_fpu(struct proc *pr)
|
PUBLIC void save_local_fpu(struct proc *pr)
|
||||||
{
|
{
|
||||||
if(!fpu_presence)
|
if(!is_fpu())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Save changed FPU context. */
|
/* Save changed FPU context. */
|
||||||
|
|
@ -258,9 +258,12 @@ PUBLIC void save_local_fpu(struct proc *pr)
|
||||||
|
|
||||||
PUBLIC void save_fpu(struct proc *pr)
|
PUBLIC void save_fpu(struct proc *pr)
|
||||||
{
|
{
|
||||||
#if CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
if (cpuid == pr->p_cpu) {
|
if (cpuid == pr->p_cpu) {
|
||||||
save_local_fpu(pr);
|
if (get_cpulocal_var(fpu_owner) == pr) {
|
||||||
|
disable_fpu_exception();
|
||||||
|
save_local_fpu(pr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
int stopped;
|
int stopped;
|
||||||
|
|
@ -280,7 +283,10 @@ PUBLIC void save_fpu(struct proc *pr)
|
||||||
RTS_UNSET(pr, RTS_PROC_STOP);
|
RTS_UNSET(pr, RTS_PROC_STOP);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
save_local_fpu(pr);
|
if (get_cpulocal_var(fpu_owner) == pr) {
|
||||||
|
disable_fpu_exception();
|
||||||
|
save_local_fpu(pr);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,6 @@ EXTERN int do_serial_debug;
|
||||||
EXTERN time_t boottime;
|
EXTERN time_t boottime;
|
||||||
EXTERN char params_buffer[512]; /* boot monitor parameters */
|
EXTERN char params_buffer[512]; /* boot monitor parameters */
|
||||||
EXTERN int minix_panicing;
|
EXTERN int minix_panicing;
|
||||||
EXTERN char fpu_presence;
|
|
||||||
EXTERN int verboseboot; /* verbose boot, init'ed in cstart */
|
EXTERN int verboseboot; /* verbose boot, init'ed in cstart */
|
||||||
#define MAGICTEST 0xC0FFEE23
|
#define MAGICTEST 0xC0FFEE23
|
||||||
EXTERN u32_t magictest; /* global magic number */
|
EXTERN u32_t magictest; /* global magic number */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user