From 72a0628c7e8063f1e6c02541cbd459eff617dd07 Mon Sep 17 00:00:00 2001 From: Bin Meng Date: Thu, 12 Mar 2020 22:39:54 -0700 Subject: [PATCH] platform: Use one unified per-HART stack size macro for all platforms As of today all platforms use 8KB of per-HART stack hence there is no need for each platform to define its own macro or use the magic number. Create one macro for all platforms. Platform still can use its own version if needed. Signed-off-by: Bin Meng Reviewed-by: Anup Patel --- include/sbi/sbi_platform.h | 3 +++ platform/andes/ae350/platform.c | 2 +- platform/andes/ae350/platform.h | 1 - platform/ariane-fpga/platform.c | 2 +- platform/kendryte/k210/platform.c | 2 +- platform/kendryte/k210/platform.h | 1 - platform/qemu/virt/platform.c | 3 +-- platform/sifive/fu540/platform.c | 3 +-- platform/spike/platform.c | 3 +-- platform/template/platform.c | 2 +- platform/thead/c910/platform.c | 2 +- platform/thead/c910/platform.h | 1 - 12 files changed, 11 insertions(+), 14 deletions(-) diff --git a/include/sbi/sbi_platform.h b/include/sbi/sbi_platform.h index e4f1a7db..bc7991c0 100644 --- a/include/sbi/sbi_platform.h +++ b/include/sbi/sbi_platform.h @@ -161,6 +161,9 @@ struct sbi_platform_operations { struct sbi_trap_info *out_trap); } __packed; +/** Platform default per-HART stack size for exception/interrupt handling */ +#define SBI_PLATFORM_DEFAULT_HART_STACK_SIZE 8192 + /** Representation of a platform */ struct sbi_platform { /** diff --git a/platform/andes/ae350/platform.c b/platform/andes/ae350/platform.c index b85cec4b..db5b46ec 100644 --- a/platform/andes/ae350/platform.c +++ b/platform/andes/ae350/platform.c @@ -186,6 +186,6 @@ const struct sbi_platform platform = { .name = "Andes AE350", .features = SBI_PLATFORM_DEFAULT_FEATURES, .hart_count = AE350_HART_COUNT, - .hart_stack_size = AE350_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/andes/ae350/platform.h b/platform/andes/ae350/platform.h index eff29963..062b656b 100644 --- a/platform/andes/ae350/platform.h +++ b/platform/andes/ae350/platform.h @@ -12,7 +12,6 @@ #define _AE350_PLATFORM_H_ #define AE350_HART_COUNT 4 -#define AE350_HART_STACK_SIZE 8192 #define AE350_PLIC_ADDR 0xe4000000 #define AE350_PLIC_NUM_SOURCES 71 diff --git a/platform/ariane-fpga/platform.c b/platform/ariane-fpga/platform.c index 9d9207e7..d2b6de97 100644 --- a/platform/ariane-fpga/platform.c +++ b/platform/ariane-fpga/platform.c @@ -201,6 +201,6 @@ const struct sbi_platform platform = { .name = "ARIANE RISC-V", .features = SBI_ARIANE_FEATURES, .hart_count = ARIANE_HART_COUNT, - .hart_stack_size = 8192, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/kendryte/k210/platform.c b/platform/kendryte/k210/platform.c index 00b38f70..2044307c 100644 --- a/platform/kendryte/k210/platform.c +++ b/platform/kendryte/k210/platform.c @@ -138,6 +138,6 @@ const struct sbi_platform platform = { .name = "Kendryte K210", .features = SBI_PLATFORM_HAS_TIMER_VALUE, .hart_count = K210_HART_COUNT, - .hart_stack_size = K210_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/kendryte/k210/platform.h b/platform/kendryte/k210/platform.h index 8e4664f5..5269bc4f 100644 --- a/platform/kendryte/k210/platform.h +++ b/platform/kendryte/k210/platform.h @@ -12,7 +12,6 @@ #include #define K210_HART_COUNT 2 -#define K210_HART_STACK_SIZE 8192 #define K210_UART_BAUDRATE 115200 diff --git a/platform/qemu/virt/platform.c b/platform/qemu/virt/platform.c index fdc5a2c7..92f34aa2 100644 --- a/platform/qemu/virt/platform.c +++ b/platform/qemu/virt/platform.c @@ -21,7 +21,6 @@ /* clang-format off */ #define VIRT_HART_COUNT 8 -#define VIRT_HART_STACK_SIZE 8192 #define VIRT_TEST_ADDR 0x100000 #define VIRT_TEST_FINISHER_FAIL 0x3333 @@ -159,6 +158,6 @@ const struct sbi_platform platform = { .name = "QEMU Virt Machine", .features = SBI_PLATFORM_DEFAULT_FEATURES, .hart_count = VIRT_HART_COUNT, - .hart_stack_size = VIRT_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/sifive/fu540/platform.c b/platform/sifive/fu540/platform.c index 848261c3..1cc1f27f 100644 --- a/platform/sifive/fu540/platform.c +++ b/platform/sifive/fu540/platform.c @@ -22,7 +22,6 @@ /* clang-format off */ #define FU540_HART_COUNT 5 -#define FU540_HART_STACK_SIZE 8192 #define FU540_SYS_CLK 1000000000 @@ -232,6 +231,6 @@ const struct sbi_platform platform = { .name = "SiFive Freedom U540", .features = SBI_PLATFORM_DEFAULT_FEATURES, .hart_count = FU540_HART_COUNT, - .hart_stack_size = FU540_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/spike/platform.c b/platform/spike/platform.c index 2b9b041e..25e5765a 100644 --- a/platform/spike/platform.c +++ b/platform/spike/platform.c @@ -11,7 +11,6 @@ /* clang-format off */ #define SPIKE_HART_COUNT 8 -#define SPIKE_HART_STACK_SIZE 8192 #define SPIKE_CLINT_ADDR 0x2000000 @@ -109,6 +108,6 @@ const struct sbi_platform platform = { .name = "Spike", .features = SBI_PLATFORM_DEFAULT_FEATURES, .hart_count = SPIKE_HART_COUNT, - .hart_stack_size = SPIKE_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/template/platform.c b/platform/template/platform.c index 74ac9f46..d09b8bd7 100644 --- a/platform/template/platform.c +++ b/platform/template/platform.c @@ -223,6 +223,6 @@ const struct sbi_platform platform = { .name = "platform-name", .features = SBI_PLATFORM_DEFAULT_FEATURES, .hart_count = 1, - .hart_stack_size = 8192, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/thead/c910/platform.c b/platform/thead/c910/platform.c index 482caad1..ca2e0e2b 100644 --- a/platform/thead/c910/platform.c +++ b/platform/thead/c910/platform.c @@ -152,6 +152,6 @@ const struct sbi_platform platform = { .name = "T-HEAD Xuantie c910", .features = SBI_THEAD_FEATURES, .hart_count = C910_HART_COUNT, - .hart_stack_size = C910_HART_STACK_SIZE, + .hart_stack_size = SBI_PLATFORM_DEFAULT_HART_STACK_SIZE, .platform_ops_addr = (unsigned long)&platform_ops }; diff --git a/platform/thead/c910/platform.h b/platform/thead/c910/platform.h index 5dcfae88..5e74128a 100644 --- a/platform/thead/c910/platform.h +++ b/platform/thead/c910/platform.h @@ -6,7 +6,6 @@ #define _C910_PLATFORM_H_ #define C910_HART_COUNT 16 -#define C910_HART_STACK_SIZE 8192 #define SBI_THEAD_FEATURES \ (SBI_PLATFORM_HAS_SCOUNTEREN | \