The per-cpu temporary buffers are not needed since the pcb_save areas have
the proper alignment. Change dummy variable in npxinit from stack to bss to ensure proper alignment. Reviewed by: bde
This commit is contained in:
parent
9f81cc840b
commit
e55bc0a096
@ -564,7 +564,7 @@ void
|
||||
npxinit(control)
|
||||
u_short control;
|
||||
{
|
||||
union savefpu dummy;
|
||||
static union savefpu dummy;
|
||||
critical_t savecrit;
|
||||
|
||||
if (!npx_exists)
|
||||
@ -926,30 +926,21 @@ static void
|
||||
fpusave(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
fnsave(addr);
|
||||
else {
|
||||
fxsave(&svxmm[oncpu]);
|
||||
bcopy(&svxmm[oncpu], addr, sizeof(struct savexmm));
|
||||
}
|
||||
else
|
||||
fxsave(addr);
|
||||
}
|
||||
|
||||
static void
|
||||
fpurstor(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
frstor(addr);
|
||||
else {
|
||||
bcopy(addr, &svxmm[oncpu], sizeof (struct savexmm));
|
||||
fxrstor(&svxmm[oncpu]);
|
||||
}
|
||||
else
|
||||
fxrstor(addr);
|
||||
}
|
||||
|
||||
#ifdef I586_CPU_XXX
|
||||
|
@ -564,7 +564,7 @@ void
|
||||
npxinit(control)
|
||||
u_short control;
|
||||
{
|
||||
union savefpu dummy;
|
||||
static union savefpu dummy;
|
||||
critical_t savecrit;
|
||||
|
||||
if (!npx_exists)
|
||||
@ -926,30 +926,21 @@ static void
|
||||
fpusave(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
fnsave(addr);
|
||||
else {
|
||||
fxsave(&svxmm[oncpu]);
|
||||
bcopy(&svxmm[oncpu], addr, sizeof(struct savexmm));
|
||||
}
|
||||
else
|
||||
fxsave(addr);
|
||||
}
|
||||
|
||||
static void
|
||||
fpurstor(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
frstor(addr);
|
||||
else {
|
||||
bcopy(addr, &svxmm[oncpu], sizeof (struct savexmm));
|
||||
fxrstor(&svxmm[oncpu]);
|
||||
}
|
||||
else
|
||||
fxrstor(addr);
|
||||
}
|
||||
|
||||
#ifdef I586_CPU_XXX
|
||||
|
@ -564,7 +564,7 @@ void
|
||||
npxinit(control)
|
||||
u_short control;
|
||||
{
|
||||
union savefpu dummy;
|
||||
static union savefpu dummy;
|
||||
critical_t savecrit;
|
||||
|
||||
if (!npx_exists)
|
||||
@ -926,30 +926,21 @@ static void
|
||||
fpusave(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
fnsave(addr);
|
||||
else {
|
||||
fxsave(&svxmm[oncpu]);
|
||||
bcopy(&svxmm[oncpu], addr, sizeof(struct savexmm));
|
||||
}
|
||||
else
|
||||
fxsave(addr);
|
||||
}
|
||||
|
||||
static void
|
||||
fpurstor(addr)
|
||||
union savefpu *addr;
|
||||
{
|
||||
static struct savexmm svxmm[MAXCPU];
|
||||
u_char oncpu = PCPU_GET(cpuid);
|
||||
|
||||
if (!cpu_fxsr)
|
||||
frstor(addr);
|
||||
else {
|
||||
bcopy(addr, &svxmm[oncpu], sizeof (struct savexmm));
|
||||
fxrstor(&svxmm[oncpu]);
|
||||
}
|
||||
else
|
||||
fxrstor(addr);
|
||||
}
|
||||
|
||||
#ifdef I586_CPU_XXX
|
||||
|
Loading…
x
Reference in New Issue
Block a user