zephyr/boards/riscv
Nicolas Pitre a50c433012 riscv: exception code mega simplification and optimization
Complete revamp of the exception entry code, including syscall handling.
Proper syscall frame exception trigger. Many correctness fixes, hacks
removal, etc. etc.

I tried to make this into several commits, but this stuff is all
inter-related and a pain to split.

The diffstat summary:

 14 files changed, 250 insertions(+), 802 deletions(-)

Binary size (before):

   text	   data	    bss	    dec	    hex	filename
   1104	      0	      0	   1104	    450	isr.S.obj
     64	      0	      0	     64	     40	userspace.S.obj

Binary size (after):

   text	   data	    bss	    dec	    hex	filename
    600	      0	      0	    600	    258	isr.S.obj
     36	      0	      0	     36	     24	userspace.S.obj

Run of samples/userspace/syscall_perf (before):

*** Booting Zephyr OS build zephyr-v3.0.0-325-g3748accae018  ***
Main Thread started; qemu_riscv32
Supervisor thread started
User thread started
Supervisor thread(0x80010048):       384 cycles	     509 instructions
User thread(0x80010140):           77312 cycles	   77437 instructions

Run of samples/userspace/syscall_perf (after):

*** Booting Zephyr OS build zephyr-v3.0.0-326-g4c877a2753b3  ***
Main Thread started; qemu_riscv32
Supervisor thread started
User thread started
Supervisor thread(0x80010048):       384 cycles	     509 instructions
User thread(0x80010138):            7040 cycles     7165 instructions

Yes, that's more than a 10x speed-up!

Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
2022-03-21 07:28:05 -04:00
..
adp_xc7k_ae350
beaglev_starlight_jh7100
esp32c3_devkitm
gd32vf103c_starter boards: riscv: introduce gd32vf103c_starter board 2022-03-08 11:10:30 +01:00
gd32vf103v_eval doc: use :kconfig:option: domain role 2022-03-02 09:28:37 +01:00
hifive1
hifive1_revb
hifive_unleashed boards: riscv: hifive_unleashed: add GPIO support 2022-02-21 20:46:47 -05:00
hifive_unmatched
it8xxx2_evb everywhere: fix typos 2022-03-18 13:24:08 -04:00
litex_vexriscv
longan_nano
m2gl025_miv everywhere: fix typos 2022-03-14 20:22:24 -04:00
neorv32 doc: use :kconfig:option: domain role 2022-03-02 09:28:37 +01:00
qemu_riscv32 boards/riscv: Add qemu_riscv32_smp and qemu_riscv64_smp 2022-02-25 19:13:50 -05:00
qemu_riscv64 riscv: exception code mega simplification and optimization 2022-03-21 07:28:05 -04:00
rv32m1_vega everywhere: fix typos 2022-03-18 13:24:08 -04:00
tlsr9518adk80d everywhere: fix typos 2022-03-18 13:24:08 -04:00
index.rst