hello world, I'm scratching my head over what may turn out to be a glitch in Volume 2, Privileged Spec v. 20190608 RISC-V https://github.com/riscv/riscv-isa-manual/releases/download/Ratified-IMFDQC-and-Priv-v1.11/riscv-privileged-20190608.pdf
In particular, the way RTEMS for RISCV sets the machine trap vector in src/rtems/bsps/riscv/shared/start/start.S with LADDR t0, _RISCV_Exception_handler csrw mtvec, t0 i.e. loads the 32 bit address _RISCV_Exception_handler into mtvec. This seems to contradict the layout oft he mtvec register documented in 3.1.7 as mtvec: 30 bits of BASE, 2 bits of MODE. in conjunction with Table 3.5, MODE 0, "All exceptions set pc to BASE". This would set pc to _RISCV_Exception_handler *divided by 4* and probably crash. So either RTEMS writes the wrong value to mtvec, or the RISC-V docs should say "All exceptions set pc to BASE x 4". Am I missing something? Jens ________________________________ Tesat-Spacecom GmbH & Co. KG Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRA 270977 Persoenlich haftender Gesellschafter: Tesat-Spacecom Geschaeftsfuehrungs GmbH; Sitz: Backnang; Registergericht: Amtsgericht Stuttgart HRB 271658; Geschaeftsfuehrung: Dr. Marc Steckling, Kerstin Basche, Ralf Zimmermann [banner] _______________________________________________ users mailing list users@rtems.org http://lists.rtems.org/mailman/listinfo/users