summaryrefslogtreecommitdiffstats
path: root/sys/alpha
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2002-11-08 15:24:32 +0000
committerjhb <jhb@FreeBSD.org>2002-11-08 15:24:32 +0000
commit1027780c5017a5546b51286f7aaa235a51957478 (patch)
tree4922958633712e06ec6b194a43959f11c5ac238b /sys/alpha
parent8ff6cd442c4f76481597e2827f5b40aaa9da59c6 (diff)
downloadFreeBSD-src-1027780c5017a5546b51286f7aaa235a51957478.zip
FreeBSD-src-1027780c5017a5546b51286f7aaa235a51957478.tar.gz
- Update the SIMOS fp-stealing code to KSE-II and beyond.
- Wrap a variable only used in !SIMOS case in #ifndef SIMOS.
Diffstat (limited to 'sys/alpha')
-rw-r--r--sys/alpha/alpha/prom.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/alpha/alpha/prom.c b/sys/alpha/alpha/prom.c
index 4481a19..ba914c5 100644
--- a/sys/alpha/alpha/prom.c
+++ b/sys/alpha/alpha/prom.c
@@ -99,7 +99,9 @@ static int alpha_console;
void
init_bootstrap_console()
{
+#ifndef SIMOS
char buf[4];
+#endif
init_prom_interface(hwrpb);
@@ -200,12 +202,14 @@ enter_prom()
/*
* SimOS console uses floating point.
*/
- if (curproc != PCPU_GET(fpcurproc)) {
+ if (curthread != PCPU_GET(fpcurthread)) {
alpha_pal_wrfen(1);
- if (PCPU_GET(fpcurproc))
- savefpstate(&PCPU_GET(fpcurproc)->p_addr->u_pcb.pcb_fp);
- PCPU_SET(fpcurproc, curproc);
- restorefpstate(&PCPU_GET(fpcurproc)->p_addr->u_pcb.pcb_fp);
+ if (PCPU_GET(fpcurthread)) {
+ savefpstate(&PCPU_GET(fpcurthread)->td_pcb->pcb_fp);
+ PCPU_GET(fpcurthread)->td_pcb->pcb_hw.apcb_flags &= ~ALPHA_PCB_FLAGS_FEN;
+ }
+ PCPU_SET(fpcurthread, curthread);
+ restorefpstate(&PCPU_GET(fpcurthread)->td_pcb->pcb_fp);
}
#endif
if (!pmap_uses_prom_console())
OpenPOWER on IntegriCloud