riscv: implement arch_switch()
The move to arch_switch() is a prerequisite for SMP support. Make it optimal without the need for an ECALL roundtrip on every context switch. Performance numbers from tests/benchmarks/sched: Before: unpend 107 ready 102 switch 188 pend 218 tot 615 (avg 615) After: unpend 107 ready 102 switch 170 pend 217 tot 596 (avg 595) Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
parent
247d2c8e3b
commit
ce8dabfe9e
12 changed files with 197 additions and 234 deletions
|
@ -141,9 +141,9 @@ ZTEST_SUITE(test_log_stack, NULL, NULL, NULL, NULL, after);
|
|||
#elif defined(CONFIG_RISCV) && !defined(CONFIG_64BIT) && !defined(CONFIG_SMP)
|
||||
|
||||
#if !defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 24
|
||||
#define HEXDUMP_USAGE 60
|
||||
#define MORE_ARGS_USAGE 40
|
||||
#define SIMPLE_USAGE 36
|
||||
#define HEXDUMP_USAGE 84
|
||||
#define MORE_ARGS_USAGE 52
|
||||
#elif defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 456
|
||||
#define HEXDUMP_USAGE 456
|
||||
|
@ -181,33 +181,33 @@ ZTEST_SUITE(test_log_stack, NULL, NULL, NULL, NULL, after);
|
|||
#elif defined(CONFIG_RISCV) && defined(CONFIG_64BIT) && defined(CONFIG_SMP)
|
||||
|
||||
#if !defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 24
|
||||
#define HEXDUMP_USAGE 60
|
||||
#define MORE_ARGS_USAGE 48
|
||||
#define SIMPLE_USAGE 80
|
||||
#define HEXDUMP_USAGE 96
|
||||
#define MORE_ARGS_USAGE 112
|
||||
#elif defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 656
|
||||
#define HEXDUMP_USAGE 656
|
||||
#define MORE_ARGS_USAGE 688
|
||||
#define SIMPLE_USAGE 688
|
||||
#define HEXDUMP_USAGE 688
|
||||
#define MORE_ARGS_USAGE 720
|
||||
#elif !defined(CONFIG_LOG_MODE_IMMEDIATE) && defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 240
|
||||
#define HEXDUMP_USAGE 240
|
||||
#define MORE_ARGS_USAGE 240
|
||||
#define SIMPLE_USAGE 272
|
||||
#define HEXDUMP_USAGE 272
|
||||
#define MORE_ARGS_USAGE 272
|
||||
#elif defined(CONFIG_LOG_MODE_IMMEDIATE) && defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 992
|
||||
#define HEXDUMP_USAGE 1408
|
||||
#define HEXDUMP_USAGE 992
|
||||
#define MORE_ARGS_USAGE 1024
|
||||
#endif
|
||||
|
||||
#elif defined(CONFIG_RISCV) && defined(CONFIG_64BIT)
|
||||
|
||||
#if !defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 16
|
||||
#define HEXDUMP_USAGE 32
|
||||
#define MORE_ARGS_USAGE 48
|
||||
#define SIMPLE_USAGE 104
|
||||
#define HEXDUMP_USAGE 144
|
||||
#define MORE_ARGS_USAGE 136
|
||||
#elif defined(CONFIG_LOG_MODE_IMMEDIATE) && !defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 616
|
||||
#define HEXDUMP_USAGE 616
|
||||
#define MORE_ARGS_USAGE 648
|
||||
#define SIMPLE_USAGE 704
|
||||
#define HEXDUMP_USAGE 704
|
||||
#define MORE_ARGS_USAGE 736
|
||||
#elif !defined(CONFIG_LOG_MODE_IMMEDIATE) && defined(CONFIG_NO_OPTIMIZATIONS)
|
||||
#define SIMPLE_USAGE 272
|
||||
#define HEXDUMP_USAGE 272
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue