summaryrefslogtreecommitdiff
path: root/sys/src/9
diff options
context:
space:
mode:
authoradventuresin9 <adventuresin9@gmail.com>2023-03-30 12:18:29 +0000
committeradventuresin9 <adventuresin9@gmail.com>2023-03-30 12:18:29 +0000
commitdd4f917aaebdc16e08b0b6f51fd11408b83f143f (patch)
tree08edb314ee380ab09aea3b9441559807d5cffd9d /sys/src/9
parent168acf6a2ff4f402c7f093ad89d71aaeab714352 (diff)
removing tos from fpimips
Diffstat (limited to 'sys/src/9')
-rw-r--r--sys/src/9/mt7688/fpimips.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/sys/src/9/mt7688/fpimips.c b/sys/src/9/mt7688/fpimips.c
index 0470bc910..53ff4fa4f 100644
--- a/sys/src/9/mt7688/fpimips.c
+++ b/sys/src/9/mt7688/fpimips.c
@@ -30,7 +30,7 @@
#include "fns.h"
#include "ureg.h"
#include "fpi.h"
-#include "tos.h"
+//#include "tos.h"
#ifdef FPEMUDEBUG
#define DBG(bits) (fpemudebug & (bits))
@@ -799,7 +799,7 @@ static void
dsexec(Instr *ip, Ureg *ur, FPsave *ufp)
{
ulong dsaddr, wpaddr;
- Tos *tos;
+// Tos *tos;
/*
* copy delay slot, EHB, EHB, EHB to tos->kscr, flush caches,
@@ -809,19 +809,27 @@ dsexec(Instr *ip, Ureg *ur, FPsave *ufp)
* executed at any address.
*/
dsaddr = ip->pc + 4;
- tos = (Tos*)(USTKTOP-sizeof(Tos));
- tos->kscr[0] = *(ulong *)dsaddr;
- tos->kscr[1] = 0xc0; /* EHB; we could use some trap instead */
- tos->kscr[2] = 0xc0; /* EHB */
- tos->kscr[3] = 0xc0; /* EHB */
- dcflush(tos->kscr, sizeof tos->kscr);
- icflush(tos->kscr, sizeof tos->kscr);
-
- wpaddr = (ulong)&tos->kscr[2] & ~7; /* clear I/R/W bits */
+// tos = (Tos*)(USTKTOP-sizeof(Tos));
+// tos->kscr[0] = *(ulong *)dsaddr;
+// tos->kscr[1] = 0xc0; /* EHB; we could use some trap instead */
+// tos->kscr[2] = 0xc0; /* EHB */
+// tos->kscr[3] = 0xc0; /* EHB */
+// dcflush(tos->kscr, sizeof tos->kscr);
+// icflush(tos->kscr, sizeof tos->kscr);
+
+ ufp->kscr[0] = *(ulong *)dsaddr;
+ ufp->kscr[1] = 0xc0; /* EHB; we could use some trap instead */
+ ufp->kscr[2] = 0xc0; /* EHB */
+ ufp->kscr[3] = 0xc0; /* EHB */
+ dcflush(ufp->kscr, sizeof ufp->kscr);
+ icflush(ufp->kscr, sizeof ufp->kscr);
+
+
+ wpaddr = (ulong)&ufp->kscr[2] & ~7; /* clear I/R/W bits */
ufp->fpdelayexec = 1;
ufp->fpdelaypc = ip->pc; /* remember branch ip->pc */
ufp->fpdelaysts = ufp->fpstatus; /* remember state of FPCOND */
- ur->pc = (ulong)tos->kscr; /* restart in tos */
+ ur->pc = (ulong)ufp->kscr; /* restart in tos */
qlock(&watchlock); /* wait for first watchpoint */
setwatchlo0(wpaddr | 1<<2); /* doubleword addr(!); i-fetches only */
setwatchhi0(TLBPID(tlbvirt())<<16); /* asid; see mmu.c */