ref: 97b32915334c700a8b282888481c7f37a6ae0442
parent: 334c5e1134719a02c35c72ec5435a967a74846f8
author: Sigrid <ftrvxmtrx@gmail.com>
date: Sun Dec 6 14:40:57 EST 2020
amd64: FP: back to static size for allocation and copying
--- a/sys/src/9/pc64/dat.h
+++ b/sys/src/9/pc64/dat.h
@@ -241,7 +241,6 @@
u64int dr7; /* shadow copy of dr7 */
u64int xcr0;
- u32int fpsavesz;
void* vmx;
--- a/sys/src/9/pc64/fpu.c
+++ b/sys/src/9/pc64/fpu.c
@@ -16,7 +16,6 @@
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);
@@ -30,9 +29,6 @@
putxcr0(m->xcr0);
fpsave = fpxsave;
fprestore = fpxrestore;
-
- cpuid(0xd, 0, regs);
- m->fpsavesz = regs[1];
cpuid(0xd, 1, regs);
if(regs[0] & Xsaveopt)
--- a/sys/src/9/pc64/main.c
+++ b/sys/src/9/pc64/main.c
@@ -488,7 +488,7 @@
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 @@
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);