zephyr/include
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
..
app_memory everywhere: fix typos 2022-03-14 20:22:24 -04:00
arch riscv: exception code mega simplification and optimization 2022-03-21 07:28:05 -04:00
audio audio: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
bluetooth Bluetooth: Host: Validate security on GATT subscription 2022-03-21 10:14:53 +01:00
canbus everywhere: fix typos 2022-03-18 13:24:08 -04:00
console drivers: console: remove @return doc for void functions 2022-01-12 16:02:16 -05:00
crypto everywhere: fix typos 2022-03-18 13:24:08 -04:00
data everywhere: fix typos 2022-03-14 20:22:24 -04:00
debug everywhere: fix typos 2022-03-14 20:22:24 -04:00
devicetree devicetree: add devicetree/can.h 2022-03-15 14:32:29 -05:00
dfu
display drivers: display: grove_lcd_rgb: move to misc 2022-02-22 11:58:33 -08:00
drivers drivers: can: add struct device argument to callback functions 2022-03-19 14:31:22 -04:00
dt-bindings everywhere: fix typos 2022-03-18 13:24:08 -04:00
fs everywhere: fix typos 2022-03-18 13:24:08 -04:00
ipc ipc_service: Extend RPMsg structs and misc fixes 2021-11-22 23:03:23 -05:00
kernel kernel: Add "per thread" timeslice mechanism 2022-03-09 13:49:44 -05:00
linker linker: Create sections from zephyr,memory-region nodes 2022-03-19 14:32:17 -04:00
logging logging: fix msg2 creation in __LOG_VA 2022-03-15 12:20:03 +01:00
lorawan lorawan: allow setting of DevNonce for OTAA re-join 2022-03-19 14:29:01 -04:00
math math: introduce macro for integer log2 2022-01-11 16:10:53 -05:00
mgmt everywhere: fix typos 2022-03-14 20:22:24 -04:00
modbus everywhere: fix typos 2022-03-14 20:22:24 -04:00
multi_heap
net everywhere: fix typos 2022-03-18 13:24:08 -04:00
pm everywhere: fix typos 2022-03-18 13:24:08 -04:00
portability lib/os: bitarray: introduce SYS_BITARRAY_DEFINE_STATIC() 2021-11-24 14:22:23 -05:00
posix net: sockets: Implement getpeername() function 2022-03-16 16:23:16 +01:00
random
settings everywhere: fix typos 2022-03-14 20:22:24 -04:00
shell shell: Add MQTT backend 2022-03-15 10:01:12 +01:00
stats stats: i2c: I2C stats 2021-12-04 07:22:56 -05:00
storage storage/flash_map: Use larger type for alignment 2021-12-30 16:32:02 -05:00
sys everywhere: fix typos 2022-03-18 13:24:08 -04:00
task_wdt
timing
toolchain everywhere: fix typos 2022-03-14 20:22:24 -04:00
tracing everywhere: fix typos 2022-03-14 20:22:24 -04:00
usb everywhere: fix typos 2022-03-18 13:24:08 -04:00
xen everywhere: fix typos 2022-03-18 13:24:08 -04:00
zephyr everywhere: fix typos 2022-03-14 20:22:24 -04:00
cache.h
device.h device: improve (z_)device_is_ready docs 2022-01-07 10:41:23 -05:00
devicetree.h devicetree: add devicetree/can.h 2022-03-15 14:32:29 -05:00
exc_handle.h
fatal.h fatal: fix missing extern "C" 2021-12-14 11:47:13 -06:00
init.h
irq_nextlevel.h drivers: interrupt_controller: remove @return doc for void funcs 2022-01-12 16:02:16 -05:00
irq_offload.h arch: Add IRQ_OFFSET_NESTED feature 2022-02-21 22:10:03 -05:00
irq.h drivers: interrupt_controller: remove @return doc for void funcs 2022-01-12 16:02:16 -05:00
kernel_includes.h
kernel_structs.h everywhere: fix typos 2022-03-14 20:22:24 -04:00
kernel_version.h
kernel.h everywhere: fix typos 2022-03-14 20:22:24 -04:00
shared_irq.h
smf.h everywhere: fix typos 2022-03-14 20:22:24 -04:00
spinlock.h doc: spinlock: ensure spinlock api is added to doxygen 2022-02-02 08:57:14 -05:00
sw_isr_table.h
sys_clock.h everywhere: fix typos 2022-03-14 20:22:24 -04:00
syscall_handler.h
syscall.h
timeout_q.h
toolchain.h toolchain: introduce macro TOOLCHAIN_HAS_C_AUTO_TYPE 2022-02-28 10:52:51 +01:00
wait_q.h
zephyr.h