e6973c764c
This patch changes how user service calls are executed: Instead of using the common interrupt logic, execute the user service call directly. Why? When a user makes a service call request, all of the service call parameters are already loaded into the correct registers, thus it makes no sense to first clobber them and then reload them, which is what the old logic does. It is much more effective to run the system call directly. During a user system call the interrupts must be re-enabled, which the new logic does as soon as we know the exception is a user service call request. This patch does NOT change the behavior of reserved system calls (like switch_context), only the user service call request is affected. |
||
---|---|---|
.. | ||
bl602 | ||
bl808 | ||
c906 | ||
esp32c3 | ||
esp32c3-legacy | ||
esp32c6 | ||
esp32h2 | ||
fe310 | ||
hpm6000 | ||
hpm6750 | ||
jh7110 | ||
k210 | ||
k230 | ||
litex | ||
mpfs | ||
qemu-rv | ||
rv32m1 | ||
thead | ||
.gitignore | ||
arch.h | ||
barriers.h | ||
csr.h | ||
elf.h | ||
inttypes.h | ||
irq.h | ||
limits.h | ||
mode.h | ||
setjmp.h | ||
spinlock.h | ||
stdarg.h | ||
syscall.h | ||
types.h |