amd64: FP: back to static size for allocation and copying
This commit is contained in:
parent
334c5e1134
commit
97b3291533
3 changed files with 3 additions and 8 deletions
|
@ -241,7 +241,6 @@ struct Mach
|
|||
|
||||
u64int dr7; /* shadow copy of dr7 */
|
||||
u64int xcr0;
|
||||
u32int fpsavesz;
|
||||
|
||||
void* vmx;
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ fpuinit(void)
|
|||
uintptr cr4;
|
||||
ulong regs[4];
|
||||
|
||||
m->fpsavesz = sizeof(FPsave); /* always enough to fit sse+avx */
|
||||
if((m->cpuiddx & (Sse|Fxsr)) == (Sse|Fxsr)){ /* have sse fp? */
|
||||
cr4 = getcr4() | CR4Osfxsr|CR4Oxmmex;
|
||||
putcr4(cr4);
|
||||
|
@ -31,9 +30,6 @@ fpuinit(void)
|
|||
fpsave = fpxsave;
|
||||
fprestore = fpxrestore;
|
||||
|
||||
cpuid(0xd, 0, regs);
|
||||
m->fpsavesz = regs[1];
|
||||
|
||||
cpuid(0xd, 1, regs);
|
||||
if(regs[0] & Xsaveopt)
|
||||
fpsave = fpxsaveopt;
|
||||
|
|
|
@ -488,7 +488,7 @@ mathemu(Ureg *ureg, void*)
|
|||
up->fpstate |= FPkernel;
|
||||
}
|
||||
while(up->fpslot[index] == nil)
|
||||
up->fpslot[index] = mallocalign(m->fpsavesz, FPalign, 0, 0);
|
||||
up->fpslot[index] = mallocalign(sizeof(FPsave), FPalign, 0, 0);
|
||||
up->fpsave = up->fpslot[index];
|
||||
up->fpstate = FPactive | (up->fpstate & (FPnouser|FPkernel|FPindexm));
|
||||
break;
|
||||
|
@ -574,8 +574,8 @@ procfork(Proc *p)
|
|||
case FPinactive | FPpush:
|
||||
case FPinactive:
|
||||
while(p->fpslot[0] == nil)
|
||||
p->fpslot[0] = mallocalign(m->fpsavesz, FPalign, 0, 0);
|
||||
memmove(p->fpsave = p->fpslot[0], up->fpslot[0], m->fpsavesz);
|
||||
p->fpslot[0] = mallocalign(sizeof(FPsave), FPalign, 0, 0);
|
||||
memmove(p->fpsave = p->fpslot[0], up->fpslot[0], sizeof(FPsave));
|
||||
p->fpstate = FPinactive;
|
||||
}
|
||||
splx(s);
|
||||
|
|
Loading…
Reference in a new issue