On 27.01.2023 14:59, Oleksii Kurochko wrote: > The patch introduces macros: BUG(), WARN(), run_in_exception(), > assert_failed. > > The implementation uses "ebreak" instruction in combination with > diffrent bug frame tables (for each type) which contains useful > information. > > Signed-off-by: Oleksii Kurochko <oleksii.kuroc...@gmail.com> > --- > Changes: > - Remove __ in define namings > - Update run_in_exception_handler() with > register void *fn_ asm(__stringify(BUG_FN_REG)) = (fn); > - Remove bug_instr_t type and change it's usage to uint32_t
But that's not correct - as said before, you can't assume you can access 32 bits, there maybe only a 16-bit insn at the end of a page, with nothing mapped to the VA of the subsequent page. Even more ... > + end: > + regs->sepc += GET_INSN_LENGTH(*(uint32_t *)pc); ... you obtain insn length you don't even need to read 32 bits. Jan