Is the U mode actually implemented in the sifive_coreip_E31_FPGA_Evaluation_v2p0_0.mcs?
PMP works as documented in “locked” M mode but seems completely missing in U mode.
Any examples / suggestions / pointers ?
Thanks!
Cesare
Is the U mode actually implemented in the sifive_coreip_E31_FPGA_Evaluation_v2p0_0.mcs?
PMP works as documented in “locked” M mode but seems completely missing in U mode.
Any examples / suggestions / pointers ?
Thanks!
Cesare
Hi Cesare,
Are you saying:
a. you can’t program the PMP related registers (pmpcfg0 & pmpcfg1) in U mode, or
b. you can program the PMP related registers in M mode, but they seem to have no effect in U mode?
If a, then it’s working as designed, you can only program them in M mode. If b, then… hmm… it’s my understanding the E31 FPGA Eval is supposed to have all the features turned on. Could you post the values you used to program the registers and what you tried to test them?
-cheers,
-m
Hi Meadhbh,
Thank you for the prompt reply!
It’s b: I can program the PMP related registers in M mode, but they seem to have no effect in U mode.
There are no particular values to post: any settings I try work as described in v 1.10 with the “L” bit set. If the L bit is not set the very same settings are completely ignored both in M mode (as expected) and in U (not expected).
For the benefit of the forum, it would be probably be more instructive if you could share SiFive test cases showing PMP functionality working in U mode?
Thanks!
Cesare
After further investigation it appears that PMP access control is enforced only for load & store and not for execution.
Any ideas / suggestions?
Thanks!
Cesare