Update journal
This commit is contained in:
parent
6be0f70c8d
commit
9abb28e9c5
115
JOURNAL.md
115
JOURNAL.md
@ -3624,3 +3624,118 @@ potential errors:
|
||||
While the bitstream with the potential fixes for the supervisor interrupts is
|
||||
not available, I'll try to automate the testing by creating a pipeline that
|
||||
automatically runs the tests in an FPGA.
|
||||
|
||||
## 2024-08-29
|
||||
|
||||
The `plic_supervisor` baremetal test seems to be working with bitstream
|
||||
`ox_u55c_450d0ff0_fix_delegation_v2.bit`. Here is the output with registers
|
||||
dumped:
|
||||
|
||||
Set timer interval.
|
||||
Registers:
|
||||
MIE: 0000000000000200
|
||||
MIP: 0000000000000280
|
||||
MSTATUS: 8000000a00006002
|
||||
MIDELEG: 0000000000000200
|
||||
SIE: 0000000000000200
|
||||
SIP: 0000000000000200
|
||||
SSTATUS: 8000000200006002
|
||||
|
||||
Jumping to supervisor mode...
|
||||
|
||||
Supervisor Trap Entry Reached
|
||||
Cause: 8000000000000009 EPC: 000000008000111a
|
||||
Hi from PLIC Interrupt Service Routine!
|
||||
Claim interrupt: 0000000000000004
|
||||
Set timer interval.
|
||||
|
||||
|
||||
Supervisor Trap Entry Reached
|
||||
Cause: 8000000000000009 EPC: 0000000080001e88
|
||||
Hi from PLIC Interrupt Service Routine!
|
||||
Claim interrupt: 0000000000000004
|
||||
Set timer interval.
|
||||
|
||||
In our OpenSBI test however:
|
||||
|
||||
OpenSBI v1.5
|
||||
____ _____ ____ _____
|
||||
/ __ \ / ____| _ \_ _|
|
||||
| | | |_ __ ___ _ __ | (___ | |_) || |
|
||||
| | | | '_ \ / _ \ '_ \ \___ \| _ < | |
|
||||
| |__| | |_) | __/ | | |____) | |_) || |_
|
||||
\____/| .__/ \___|_| |_|_____/|____/_____|
|
||||
| |
|
||||
|_|
|
||||
|
||||
--- TESTING PLIC ---
|
||||
Timer interrupt disabled
|
||||
Enabled supervisor delegation:
|
||||
Registers:
|
||||
MIE : 0x0000000000000200
|
||||
MIP : 0x0000000000000080
|
||||
MSTATUS : 0x8000000a00006082
|
||||
MIDELEG : 0x0000000000000222
|
||||
SIE : 0x0000000000000200
|
||||
SIP : 0x0000000000000000
|
||||
SSTATUS : 0x8000000200006002
|
||||
Enabling timer in PLIC
|
||||
Pending: 16
|
||||
Claim: 4
|
||||
Pending: 0
|
||||
Clearing MIP
|
||||
Switching to supervisor
|
||||
Registers:
|
||||
MIE : 0x0000000000000200
|
||||
MIP : 0x0000000000000080
|
||||
MSTATUS : 0x8000000a00006082
|
||||
MIDELEG : 0x0000000000000222
|
||||
SIE : 0x0000000000000200
|
||||
SIP : 0x0000000000000000
|
||||
SSTATUS : 0x8000000200006002
|
||||
Hello from supervisor
|
||||
Registers:
|
||||
SIE : 0x0000000000000200
|
||||
SIP : 0x0000000000000000
|
||||
SSTATUS : 0x8000000200006002
|
||||
Timer alarm programmed
|
||||
Waiting for interrupt...
|
||||
|
||||
Here are closer together:
|
||||
|
||||
Baremetal:
|
||||
MIE: 0000000000000200
|
||||
MIP: 0000000000000280
|
||||
MSTATUS: 8000000a00006002
|
||||
MIDELEG: 0000000000000200
|
||||
SIE: 0000000000000200
|
||||
SIP: 0000000000000200
|
||||
SSTATUS: 8000000200006002
|
||||
---------------------------------
|
||||
OpenSBI:
|
||||
MIE: 0000000000000200
|
||||
MIP: 0000000000000080 *
|
||||
MSTATUS: 8000000a00006082 *
|
||||
MIDELEG: 0000000000000222 *
|
||||
SIE: 0000000000000200
|
||||
SIP: 0000000000000000 *
|
||||
SSTATUS: 8000000200006002
|
||||
|
||||
In the baremetal test, the interrupts are already pending before jumping to
|
||||
supervisor.
|
||||
|
||||
Let's try following all the steps exactly the same in OpenSBI.
|
||||
|
||||
The supervisor trap address hold the proper function.
|
||||
|
||||
The problem seems to be that the offsets I was using for the auxiliar timer were
|
||||
not correct:
|
||||
|
||||
-#define PLIC_ENABLE_OFFSET 0x2000UL
|
||||
-#define PLIC_THRESHOLD_OFFSET 0x200000UL
|
||||
-#define PLIC_CLAIM_OFFSET 0x200004UL
|
||||
+#define PLIC_ENABLE_OFFSET 0x2080UL
|
||||
+#define PLIC_THRESHOLD_OFFSET 0x201000UL
|
||||
+#define PLIC_CLAIM_OFFSET 0x201004UL
|
||||
|
||||
This seems to be required now as we have two contexts. The test is working now.
|
||||
|
Loading…
Reference in New Issue
Block a user