summaryrefslogtreecommitdiff
path: root/lib/sbi/objects.mk
diff options
context:
space:
mode:
authorVivian Wang <dramforever@live.com>2022-10-10 19:34:44 +0300
committerAnup Patel <anup@brainfault.org>2022-10-23 08:30:30 +0300
commit56bed1a0fe39cc788452202827ab5fdc3c58bc20 (patch)
tree713d6fad53f7dfb29e0cbe12ecd025df7647c0b7 /lib/sbi/objects.mk
parent9d54f431e803342218561faa6b4649bbdcea1d24 (diff)
downloadopensbi-56bed1a0fe39cc788452202827ab5fdc3c58bc20.tar.xz
lib: sbi_ecall: Generate extensions list with carray
Instead of hard-coding the list of extensions in C code, use carray to generate the list of extensions. Using carray makes adding and removing extensions slightly cleaner. This also paves the way for using Kconfig to disable unneeded extensions. Signed-off-by: Vivian Wang <dramforever@live.com> Reviewed-by: Andrew Jones <ajones@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'lib/sbi/objects.mk')
-rw-r--r--lib/sbi/objects.mk22
1 files changed, 18 insertions, 4 deletions
diff --git a/lib/sbi/objects.mk b/lib/sbi/objects.mk
index 1ed1983..fa20b7b 100644
--- a/lib/sbi/objects.mk
+++ b/lib/sbi/objects.mk
@@ -12,17 +12,31 @@ libsbi-objs-y += riscv_atomic.o
libsbi-objs-y += riscv_hardfp.o
libsbi-objs-y += riscv_locks.o
-libsbi-objs-y += sbi_bitmap.o
-libsbi-objs-y += sbi_bitops.o
-libsbi-objs-y += sbi_console.o
-libsbi-objs-y += sbi_domain.o
libsbi-objs-y += sbi_ecall.o
+libsbi-objs-y += sbi_ecall_exts.o
+
+# The order of below extensions is performance optimized
+carray-sbi_ecall_exts-y += ecall_time
+carray-sbi_ecall_exts-y += ecall_rfence
+carray-sbi_ecall_exts-y += ecall_ipi
+carray-sbi_ecall_exts-y += ecall_base
+carray-sbi_ecall_exts-y += ecall_hsm
+carray-sbi_ecall_exts-y += ecall_srst
+carray-sbi_ecall_exts-y += ecall_pmu
+carray-sbi_ecall_exts-y += ecall_legacy
+carray-sbi_ecall_exts-y += ecall_vendor
+
libsbi-objs-y += sbi_ecall_base.o
libsbi-objs-y += sbi_ecall_hsm.o
libsbi-objs-y += sbi_ecall_legacy.o
libsbi-objs-y += sbi_ecall_pmu.o
libsbi-objs-y += sbi_ecall_replace.o
libsbi-objs-y += sbi_ecall_vendor.o
+
+libsbi-objs-y += sbi_bitmap.o
+libsbi-objs-y += sbi_bitops.o
+libsbi-objs-y += sbi_console.o
+libsbi-objs-y += sbi_domain.o
libsbi-objs-y += sbi_emulate_csr.o
libsbi-objs-y += sbi_fifo.o
libsbi-objs-y += sbi_hart.o