diff options
35 files changed, 2440 insertions, 2440 deletions
diff --git a/.gitmodules b/.gitmodules index ec643f0..a304a8f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,9 @@ [submodule "software/hello"] path = software/hello url = https://github.com/sifive/example-hello.git -[submodule "freedom-mee"] - path = freedom-mee - url = https://github.com/sifive/freedom-mee.git +[submodule "freedom-metal"] + path = freedom-metal + url = https://github.com/sifive/freedom-metal.git [submodule "scripts/elf2hex"] path = scripts/elf2hex url = ../elf2hex @@ -12,7 +12,7 @@ include $(extra_configs) endif # Select Legacy BSP or Freedom Metal BSP -# Allowed values are 'legacy' and 'mee' +# Allowed values are 'legacy' and 'metal' BSP ?= legacy # Use BOARD as a synonym for TARGET @@ -28,7 +28,7 @@ LINK_TARGET ?= flash GDB_PORT ?= 3333 else # MEE -BSP = mee +override BSP = metal BSP_SUBDIR ?= PROGRAM ?= hello TARGET ?= sifive-hifive1 @@ -79,25 +79,25 @@ help: @echo " SiFive Freedom E Software Development Kit " @echo " Makefile targets:" @echo "" - @echo " software BSP=mee [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" + @echo " software BSP=metal [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" @echo " Build a software program to load with the" @echo " debugger." @echo "" - @echo " mee BSP=mee [TARGET=$(TARGET)]" + @echo " metal BSP=metal [TARGET=$(TARGET)]" @echo " Build the MEE library for TARGET" @echo "" - @echo " clean BSP=mee [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" + @echo " clean BSP=metal [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" @echo " Clean compiled objects for a specified " @echo " software program." @echo "" - @echo " upload BSP=mee [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" + @echo " upload BSP=metal [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" @echo " Launch OpenOCD to flash your program to the" @echo " on-board Flash." @echo "" - @echo " debug BSP=mee [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" + @echo " debug BSP=metal [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" @echo " Launch OpenOCD and attach GDB to the running program." @echo "" - @echo " standalone BSP=mee STANDALONE_DEST=/path/to/desired/location" + @echo " standalone BSP=metal STANDALONE_DEST=/path/to/desired/location" @echo " [PROGRAM=$(PROGRAM) TARGET=$(TARGET)]:" @echo " Export a program for a single target into a standalone" @echo " project directory at STANDALONE_DEST." @@ -115,7 +115,7 @@ clean: # format or fixed text of the output without consulting the # Freedom Studio dev team. ############################################################# -ifeq ($(BSP),mee) +ifeq ($(BSP),metal) # MEE boards are any folders that aren't the Legacy BSP or update-targets.sh EXCLUDE_TARGET_DIRS = drivers env include libwrap update-targets.sh @@ -133,13 +133,13 @@ endif ############################################################# # Compiles an instance of the MEE targeted at $(TARGET) ############################################################# -ifeq ($(BSP),mee) -MEE_SOURCE_PATH ?= freedom-mee -MEE_LDSCRIPT = $(BSP_DIR)/mee.lds -MEE_HEADER = $(BSP_DIR)/mee.h +ifeq ($(BSP),metal) +MEE_SOURCE_PATH ?= freedom-metal +MEE_LDSCRIPT = $(BSP_DIR)/metal.lds +MEE_HEADER = $(BSP_DIR)/metal.h -.PHONY: mee -mee: $(BSP_DIR)/install/stamp +.PHONY: metal +metal: $(BSP_DIR)/install/stamp $(BSP_DIR)/build/Makefile: @rm -rf $(dir $@) @@ -163,20 +163,20 @@ $(BSP_DIR)/install/stamp: $(BSP_DIR)/build/Makefile $(BSP_DIR)/install/lib/libriscv%.a: $(BSP_DIR)/install/stamp ;@: -$(BSP_DIR)/install/lib/libmee.a: $(BSP_DIR)/install/lib/libriscv__mmachine__$(TARGET).a +$(BSP_DIR)/install/lib/libmetal.a: $(BSP_DIR)/install/lib/libriscv__mmachine__$(TARGET).a cp $< $@ -$(BSP_DIR)/install/lib/libmee-gloss.a: $(BSP_DIR)/install/lib/libriscv__menv__mee.a +$(BSP_DIR)/install/lib/libmetal-gloss.a: $(BSP_DIR)/install/lib/libriscv__menv__metal.a cp $< $@ -.PHONY: clean-mee -clean-mee: +.PHONY: clean-metal +clean-metal: rm -rf $(BSP_DIR)/install rm -rf $(BSP_DIR)/build -clean: clean-mee +clean: clean-metal endif -mee_install: mee +metal_install: metal $(MAKE) -C $(MEE_SOURCE_PATH) install ############################################################# @@ -203,7 +203,7 @@ clean: clean-elf2hex # Standalone Project Export ############################################################# -ifeq ($(BSP),mee) +ifeq ($(BSP),metal) ifeq ($(STANDALONE_DEST),) standalone: $(error Please provide STANDALONE_DEST to create a standalone project) @@ -219,8 +219,8 @@ standalone: \ $(STANDALONE_DEST) \ $(STANDALONE_DEST)/bsp \ $(STANDALONE_DEST)/src \ - $(BSP_DIR)/install/lib/libmee.a \ - $(BSP_DIR)/install/lib/libmee-gloss.a \ + $(BSP_DIR)/install/lib/libmetal.a \ + $(BSP_DIR)/install/lib/libmetal-gloss.a \ $(SRC_DIR) \ scripts/standalone.mk cp -r $(addprefix $(BSP_DIR)/,$(filter-out build,$(shell ls $(BSP_DIR)))) $</bsp/ @@ -241,7 +241,7 @@ endif # In this top level Makefile, just describe how to turn the elf into # $(PROGRAM_HEX) -ifeq ($(BSP),mee) +ifeq ($(BSP),metal) $(PROGRAM_HEX): \ scripts/elf2hex/install/bin/$(CROSS_COMPILE)-elf2hex \ $(PROGRAM_ELF) @@ -279,7 +279,7 @@ else RISCV_OPENOCD=openocd endif -ifeq ($(BSP),mee) +ifeq ($(BSP),metal) upload: $(PROGRAM_ELF) scripts/upload --elf $(PROGRAM_ELF) --openocd $(RISCV_OPENOCD) --gdb $(RISCV_GDB) --openocd-config bsp/$(TARGET)/openocd.cfg @@ -287,7 +287,7 @@ upload: $(PROGRAM_ELF) debug: $(PROGRAM_ELF) scripts/debug --elf $(PROGRAM_ELF) --openocd $(RISCV_OPENOCD) --gdb $(RISCV_GDB) --openocd-config bsp/$(TARGET)/openocd.cfg -else # BSP != mee +else # BSP != metal OPENOCDCFG ?= bsp/env/$(TARGET)/openocd.cfg OPENOCDARGS += -f $(OPENOCDCFG) @@ -321,4 +321,4 @@ GDBCMDS += -ex "target extended-remote localhost:$(GDB_PORT)" run_gdb: $(RISCV_GDB) $(PROGRAM_DIR)/$(PROGRAM) $(GDBARGS) $(GDBCMDS) -endif # BSP == mee +endif # BSP == metal @@ -50,10 +50,10 @@ of Freedom E SDK. the Freedom Metal library to the target device. It is included as reference so that users of Freedom Metal are aware of what features and peripherals are available on the target. - * mee.h + * metal.h - The Freedom Metal machine header which is used internally to Freedom Metal to instantiate structures to support the target device. - * mee.lds + * metal.lds - The linker script for the target device. * openocd.cfg (for development board and FPGA targets) - Used to configure OpenOCD for flashing and debugging the target device. @@ -124,7 +124,7 @@ the legacy version of the examples from this repository. - watchdog Legacy examples can be built using the same commands as the Freedom Metal examples and simply -omitting the `BSP=mee` argument or substituting it with `BSP=legacy`. +omitting the `BSP=metal` argument or substituting it with `BSP=legacy`. ### Setting up the SDK ### @@ -187,8 +187,8 @@ git submodule update --init --recursive To ease the transition for consumers of the Legacy SDK, we've namespaced the new Freedom Metal examples behind the environment variable `BSP`. To use the -Freedom Metal examples, you may `export BSP=mee` in your shell environment, or simply -pass `BSP=mee` as an argument to your `make` invocations as you see in the following +Freedom Metal examples, you may `export BSP=metal` in your shell environment, or simply +pass `BSP=metal` as an argument to your `make` invocations as you see in the following example commands. #### Building an Example #### @@ -196,7 +196,7 @@ example commands. To compile a bare-metal RISC-V program: ``` -make BSP=mee [PROGRAM=hello] [TARGET=sifive-hifive1] software +make BSP=metal [PROGRAM=hello] [TARGET=sifive-hifive1] software ``` The square brackets in the above command indicate optional parameters for the @@ -206,12 +206,12 @@ If, for example, you wished to build the `timer-interrupt` example for the S51 Arty FPGA Evaluation target, you would instead run the command ``` -make BSP=mee PROGRAM=timer-interrupt TARGET=coreip-s51-arty software +make BSP=metal PROGRAM=timer-interrupt TARGET=coreip-s51-arty software ``` #### Building a Legacy Example #### -The legacy examples can still be built by omitting `BSP=mee` or by substituting +The legacy examples can still be built by omitting `BSP=metal` or by substituting `BSP=legacy`. For example, to build the legacy `demo_gpio` application for HiFive 1, run: @@ -222,19 +222,19 @@ make PROGRAM=demo_gpio TARGET=freedom-e300-hifive1 software #### Uploading to the Target Board #### ``` -make BSP=mee [PROGRAM=hello] [TARGET=sifive-hifive1] upload +make BSP=metal [PROGRAM=hello] [TARGET=sifive-hifive1] upload ``` #### Debugging a Target Program #### ``` -make BSP=mee [PROGRAM=hello] [TARGET=sifive-hifive1] debug +make BSP=metal [PROGRAM=hello] [TARGET=sifive-hifive1] debug ``` #### Cleaning a Target Program Build Directory #### ``` -make BSP=mee [PROGRAM=hello] [TARGET=sifive-hifive1] clean +make BSP=metal [PROGRAM=hello] [TARGET=sifive-hifive1] clean ``` #### Create a Standalone Project #### @@ -247,7 +247,7 @@ Legacy Freedom E SDK. `STANDALONE_DEST` is a required argument to provide the desired project location. ``` -make BSP=mee [PROGRAM=hello] [TARGET=sifive-hifive1] STANDALONE_DEST=/path/to/desired/location standalone +make BSP=metal [PROGRAM=hello] [TARGET=sifive-hifive1] STANDALONE_DEST=/path/to/desired/location standalone ``` Run `make help` for more commands. diff --git a/bsp/coreip-e24-arty/mee.h b/bsp/coreip-e24-arty/mee.h deleted file mode 100644 index fbb86bc..0000000 --- a/bsp/coreip-e24-arty/mee.h +++ /dev/null @@ -1,560 +0,0 @@ -#ifndef ASSEMBLY - -#ifndef COREIP_E24_ARTY__MEE_H -#define COREIP_E24_ARTY__MEE_H - -#ifdef __MEE_MACHINE_MACROS -#define __MEE_CLIC_SUBINTERRUPTS 169 - -/* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 -#endif -#endif - -#ifndef __MEE_MACHINE_MACROS -#define __MEE_INTERRUPT_CONTROLLER_2000000_INTERRUPTS 3 -#define MEE_MAX_CLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_2000000_INTERRUPTS - -#define __MEE_CLIC_SUBINTERRUPTS 169 - -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 127 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS - -#define __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 -#define MEE_MAX_GLOBAL_EXT_INTERRUPTS __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS - -#define __MEE_GPIO_20002000_INTERRUPTS 16 -#define MEE_MAX_GPIO_INTERRUPTS __MEE_GPIO_20002000_INTERRUPTS - -#define __MEE_SERIAL_20000000_INTERRUPTS 1 -#define MEE_MAX_UART_INTERRUPTS 1 - -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/sifive,clic0.h> -#include <mee/drivers/fixed-clock.h> -#include <mee/drivers/sifive,gpio0.h> -#include <mee/drivers/sifive,uart0.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -#include <mee/drivers/sifive,global-external-interrupts0.h> -#include <mee/drivers/sifive,gpio-leds.h> -#include <mee/drivers/sifive,gpio-buttons.h> -#include <mee/drivers/sifive,gpio-switches.h> -#include <mee/drivers/sifive,test0.h> -/* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; - -/* From interrupt_controller@2000000 */ -asm (".weak __mee_dt_interrupt_controller_2000000"); -struct __mee_driver_sifive_clic0 __mee_dt_interrupt_controller_2000000; - -/* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; - -/* From clock@0 */ -asm (".weak __mee_dt_clock_0"); -struct __mee_driver_fixed_clock __mee_dt_clock_0; - -/* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; - -/* From global_external_interrupts */ -asm (".weak __mee_dt_global_external_interrupts"); -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts; - -/* From gpio@20002000 */ -asm (".weak __mee_dt_gpio_20002000"); -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000; - -/* From serial@20000000 */ -asm (".weak __mee_dt_serial_20000000"); -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000; - -/* From led@0red */ -asm (".weak __mee_dt_led_0red"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red; - -/* From led@0green */ -asm (".weak __mee_dt_led_0green"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green; - -/* From led@0blue */ -asm (".weak __mee_dt_led_0blue"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue; - -/* From button@0 */ -asm (".weak __mee_dt_button_0"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_0; - -/* From button@1 */ -asm (".weak __mee_dt_button_1"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_1; - -/* From button@2 */ -asm (".weak __mee_dt_button_2"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_2; - -/* From button@3 */ -asm (".weak __mee_dt_button_3"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_3; - -/* From switch@0 */ -asm (".weak __mee_dt_switch_0"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0; - -/* From switch@1 */ -asm (".weak __mee_dt_switch_1"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1; - -/* From switch@2 */ -asm (".weak __mee_dt_switch_2"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2; - -/* From switch@3 */ -asm (".weak __mee_dt_switch_3"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3; - -/* From teststatus@4000 */ -asm (".weak __mee_dt_teststatus_4000"); -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000; - -/* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, - .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, -}; - -/* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) - -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) - -/* From clock@0 */ -struct __mee_driver_fixed_clock __mee_dt_clock_0 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 32500000UL, -}; - -/* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, - .init_done = 0, - .interrupt_controller = 1, -}; - -/* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) - -/* From interrupt_controller@2000000 */ -struct __mee_driver_sifive_clic0 __mee_dt_interrupt_controller_2000000 = { - .vtable = &__mee_driver_vtable_sifive_clic0, - .controller.vtable = &__mee_driver_vtable_sifive_clic0.clic_vtable, - .control_base = 33554432UL, - .control_size = 16777216UL, - .init_done = 0, - .num_interrupts = MEE_MAX_CLIC_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_lines[0] = 3, - .interrupt_lines[1] = 7, - .interrupt_lines[2] = 11, - .num_subinterrupts = 169UL, - .num_intbits = 4UL, - .max_levels = 16UL, - .interrupt_controller = 1, -}; - -/* From interrupt_controller@2000000 */ -#define __MEE_DT_SIFIVE_CLIC0_HANDLE (&__mee_dt_interrupt_controller_2000000.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_2000000_HANDLE (&__mee_dt_interrupt_controller_2000000.controller) - -/* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, - .init_done = 0, -/* From interrupt_controller@2000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_2000000.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 26, - .interrupt_lines[1] = 27, - .interrupt_lines[2] = 28, - .interrupt_lines[3] = 29, - .interrupt_lines[4] = 30, - .interrupt_lines[5] = 31, - .interrupt_lines[6] = 32, - .interrupt_lines[7] = 33, - .interrupt_lines[8] = 34, - .interrupt_lines[9] = 35, - .interrupt_lines[10] = 36, - .interrupt_lines[11] = 37, - .interrupt_lines[12] = 38, - .interrupt_lines[13] = 39, - .interrupt_lines[14] = 40, - .interrupt_lines[15] = 41, - .interrupt_lines[16] = 42, - .interrupt_lines[17] = 43, - .interrupt_lines[18] = 44, - .interrupt_lines[19] = 45, - .interrupt_lines[20] = 46, - .interrupt_lines[21] = 47, - .interrupt_lines[22] = 48, - .interrupt_lines[23] = 49, - .interrupt_lines[24] = 50, - .interrupt_lines[25] = 51, - .interrupt_lines[26] = 52, - .interrupt_lines[27] = 53, - .interrupt_lines[28] = 54, - .interrupt_lines[29] = 55, - .interrupt_lines[30] = 56, - .interrupt_lines[31] = 57, - .interrupt_lines[32] = 58, - .interrupt_lines[33] = 59, - .interrupt_lines[34] = 60, - .interrupt_lines[35] = 61, - .interrupt_lines[36] = 62, - .interrupt_lines[37] = 63, - .interrupt_lines[38] = 64, - .interrupt_lines[39] = 65, - .interrupt_lines[40] = 66, - .interrupt_lines[41] = 67, - .interrupt_lines[42] = 68, - .interrupt_lines[43] = 69, - .interrupt_lines[44] = 70, - .interrupt_lines[45] = 71, - .interrupt_lines[46] = 72, - .interrupt_lines[47] = 73, - .interrupt_lines[48] = 74, - .interrupt_lines[49] = 75, - .interrupt_lines[50] = 76, - .interrupt_lines[51] = 77, - .interrupt_lines[52] = 78, - .interrupt_lines[53] = 79, - .interrupt_lines[54] = 80, - .interrupt_lines[55] = 81, - .interrupt_lines[56] = 82, - .interrupt_lines[57] = 83, - .interrupt_lines[58] = 84, - .interrupt_lines[59] = 85, - .interrupt_lines[60] = 86, - .interrupt_lines[61] = 87, - .interrupt_lines[62] = 88, - .interrupt_lines[63] = 89, - .interrupt_lines[64] = 90, - .interrupt_lines[65] = 91, - .interrupt_lines[66] = 92, - .interrupt_lines[67] = 93, - .interrupt_lines[68] = 94, - .interrupt_lines[69] = 95, - .interrupt_lines[70] = 96, - .interrupt_lines[71] = 97, - .interrupt_lines[72] = 98, - .interrupt_lines[73] = 99, - .interrupt_lines[74] = 100, - .interrupt_lines[75] = 101, - .interrupt_lines[76] = 102, - .interrupt_lines[77] = 103, - .interrupt_lines[78] = 104, - .interrupt_lines[79] = 105, - .interrupt_lines[80] = 106, - .interrupt_lines[81] = 107, - .interrupt_lines[82] = 108, - .interrupt_lines[83] = 109, - .interrupt_lines[84] = 110, - .interrupt_lines[85] = 111, - .interrupt_lines[86] = 112, - .interrupt_lines[87] = 113, - .interrupt_lines[88] = 114, - .interrupt_lines[89] = 115, - .interrupt_lines[90] = 116, - .interrupt_lines[91] = 117, - .interrupt_lines[92] = 118, - .interrupt_lines[93] = 119, - .interrupt_lines[94] = 120, - .interrupt_lines[95] = 121, - .interrupt_lines[96] = 122, - .interrupt_lines[97] = 123, - .interrupt_lines[98] = 124, - .interrupt_lines[99] = 125, - .interrupt_lines[100] = 126, - .interrupt_lines[101] = 127, - .interrupt_lines[102] = 128, - .interrupt_lines[103] = 129, - .interrupt_lines[104] = 130, - .interrupt_lines[105] = 131, - .interrupt_lines[106] = 132, - .interrupt_lines[107] = 133, - .interrupt_lines[108] = 134, - .interrupt_lines[109] = 135, - .interrupt_lines[110] = 136, - .interrupt_lines[111] = 137, - .interrupt_lines[112] = 138, - .interrupt_lines[113] = 139, - .interrupt_lines[114] = 140, - .interrupt_lines[115] = 141, - .interrupt_lines[116] = 142, - .interrupt_lines[117] = 143, - .interrupt_lines[118] = 144, - .interrupt_lines[119] = 145, - .interrupt_lines[120] = 146, - .interrupt_lines[121] = 147, - .interrupt_lines[122] = 148, - .interrupt_lines[123] = 149, - .interrupt_lines[124] = 150, - .interrupt_lines[125] = 151, - .interrupt_lines[126] = 152, -}; - -/* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -/* From global_external_interrupts */ -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts = { - .vtable = &__mee_driver_vtable_sifive_global_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_global_external_interrupts0.global0_vtable, - .init_done = 0, -/* From interrupt_controller@2000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_2000000.controller, - .num_interrupts = MEE_MAX_GLOBAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 22, - .interrupt_lines[1] = 23, - .interrupt_lines[2] = 24, - .interrupt_lines[3] = 25, -}; - -/* From global_external_interrupts */ -#define __MEE_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__mee_dt_global_external_interrupts.irc) - -#define __MEE_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__mee_dt_global_external_interrupts.irc) - -/* From gpio@20002000 */ -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000 = { - .vtable = &__mee_driver_vtable_sifive_gpio0, - .base = 536879104UL, - .size = 4096UL, -/* From interrupt_controller@2000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_2000000.controller, - .num_interrupts = MEE_MAX_GPIO_INTERRUPTS, - .interrupt_lines[0] = 0, - .interrupt_lines[1] = 1, - .interrupt_lines[2] = 2, - .interrupt_lines[3] = 3, - .interrupt_lines[4] = 4, - .interrupt_lines[5] = 5, - .interrupt_lines[6] = 6, - .interrupt_lines[7] = 7, - .interrupt_lines[8] = 8, - .interrupt_lines[9] = 9, - .interrupt_lines[10] = 10, - .interrupt_lines[11] = 11, - .interrupt_lines[12] = 12, - .interrupt_lines[13] = 13, - .interrupt_lines[14] = 14, - .interrupt_lines[15] = 15, -}; - -/* From serial@20000000 */ -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000 = { - .vtable = &__mee_driver_vtable_sifive_uart0, - .uart.vtable = &__mee_driver_vtable_sifive_uart0.uart, - .control_base = 536870912UL, - .control_size = 4096UL, -/* From clock@0 */ - .clock = &__mee_dt_clock_0.clock, - .pinmux = NULL, -/* From interrupt_controller@2000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_2000000.controller, - .num_interrupts = MEE_MAX_UART_INTERRUPTS, - .interrupt_line = 16UL, -}; - -/* From led@0red */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 0UL, - .label = "LD0red", -}; - -/* From led@0green */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 1UL, - .label = "LD0green", -}; - -/* From led@0blue */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 2UL, - .label = "LD0blue", -}; - -/* From button@0 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_0 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 4UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 9UL, - .label = "BTN0", -}; - -/* From button@1 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_1 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 5UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 10UL, - .label = "BTN1", -}; - -/* From button@2 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_2 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 6UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 11UL, - .label = "BTN2", -}; - -/* From button@3 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_3 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 7UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 12UL, - .label = "BTN3", -}; - -/* From switch@0 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 0UL, - .label = "SW0", -}; - -/* From switch@1 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 1UL, - .label = "SW1", -}; - -/* From switch@2 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 2UL, - .label = "SW2", -}; - -/* From switch@3 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 8UL, - .label = "SW3", -}; - -/* From teststatus@4000 */ -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000 = { - .vtable = &__mee_driver_vtable_sifive_test0, - .shutdown.vtable = &__mee_driver_vtable_sifive_test0.shutdown, - .base = 16384UL, - .size = 4096UL, -}; - -/* From teststatus@4000 */ -#define __MEE_DT_SHUTDOWN_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -#define __MEE_DT_TESTSTATUS_4000_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -/* From serial@20000000 */ -#define __MEE_DT_STDOUT_UART_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_SERIAL_20000000_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_STDOUT_UART_BAUD 115200 - -#define __MEE_DT_MAX_HARTS 1 - -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; - -#define __MEE_DT_MAX_LEDS 3 - -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { - &__mee_dt_led_0red, - &__mee_dt_led_0green, - &__mee_dt_led_0blue}; - -#define __MEE_DT_MAX_BUTTONS 4 - -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { - &__mee_dt_button_0, - &__mee_dt_button_1, - &__mee_dt_button_2, - &__mee_dt_button_3}; - -#define __MEE_DT_MAX_SWITCHES 4 - -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { - &__mee_dt_switch_0, - &__mee_dt_switch_1, - &__mee_dt_switch_2, - &__mee_dt_switch_3}; - -#endif - -#endif /*MEE__MACHINE__COREIP_E24_ARTY__MEE_H*/ - -#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-e24-arty/metal.h b/bsp/coreip-e24-arty/metal.h new file mode 100644 index 0000000..0306e2c --- /dev/null +++ b/bsp/coreip-e24-arty/metal.h @@ -0,0 +1,560 @@ +#ifndef ASSEMBLY + +#ifndef COREIP_E24_ARTY__METAL_H +#define COREIP_E24_ARTY__METAL_H + +#ifdef __METAL_MACHINE_MACROS +#define __METAL_CLIC_SUBINTERRUPTS 169 + +/* To Satisfy libmetal build */ +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 +#endif +#endif + +#ifndef __METAL_MACHINE_MACROS +#define __METAL_INTERRUPT_CONTROLLER_2000000_INTERRUPTS 3 +#define METAL_MAX_CLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_2000000_INTERRUPTS + +#define __METAL_CLIC_SUBINTERRUPTS 169 + +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 127 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS + +#define __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 +#define METAL_MAX_GLOBAL_EXT_INTERRUPTS __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS + +#define __METAL_GPIO_20002000_INTERRUPTS 16 +#define METAL_MAX_GPIO_INTERRUPTS __METAL_GPIO_20002000_INTERRUPTS + +#define __METAL_SERIAL_20000000_INTERRUPTS 1 +#define METAL_MAX_UART_INTERRUPTS 1 + +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/sifive,clic0.h> +#include <metal/drivers/fixed-clock.h> +#include <metal/drivers/sifive,gpio0.h> +#include <metal/drivers/sifive,uart0.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +#include <metal/drivers/sifive,global-external-interrupts0.h> +#include <metal/drivers/sifive,gpio-leds.h> +#include <metal/drivers/sifive,gpio-buttons.h> +#include <metal/drivers/sifive,gpio-switches.h> +#include <metal/drivers/sifive,test0.h> +/* From cpu@0 */ +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; + +/* From interrupt_controller@2000000 */ +asm (".weak __metal_dt_interrupt_controller_2000000"); +struct __metal_driver_sifive_clic0 __metal_dt_interrupt_controller_2000000; + +/* From interrupt_controller */ +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; + +/* From clock@0 */ +asm (".weak __metal_dt_clock_0"); +struct __metal_driver_fixed_clock __metal_dt_clock_0; + +/* From local_external_interrupts_0 */ +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; + +/* From global_external_interrupts */ +asm (".weak __metal_dt_global_external_interrupts"); +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts; + +/* From gpio@20002000 */ +asm (".weak __metal_dt_gpio_20002000"); +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000; + +/* From serial@20000000 */ +asm (".weak __metal_dt_serial_20000000"); +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000; + +/* From led@0red */ +asm (".weak __metal_dt_led_0red"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red; + +/* From led@0green */ +asm (".weak __metal_dt_led_0green"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green; + +/* From led@0blue */ +asm (".weak __metal_dt_led_0blue"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue; + +/* From button@0 */ +asm (".weak __metal_dt_button_0"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_0; + +/* From button@1 */ +asm (".weak __metal_dt_button_1"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_1; + +/* From button@2 */ +asm (".weak __metal_dt_button_2"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_2; + +/* From button@3 */ +asm (".weak __metal_dt_button_3"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_3; + +/* From switch@0 */ +asm (".weak __metal_dt_switch_0"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0; + +/* From switch@1 */ +asm (".weak __metal_dt_switch_1"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1; + +/* From switch@2 */ +asm (".weak __metal_dt_switch_2"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2; + +/* From switch@3 */ +asm (".weak __metal_dt_switch_3"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3; + +/* From teststatus@4000 */ +asm (".weak __metal_dt_teststatus_4000"); +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000; + +/* From cpu@0 */ +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, + .timebase = 1000000UL, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, +}; + +/* From cpu@0 */ +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) + +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) + +/* From clock@0 */ +struct __metal_driver_fixed_clock __metal_dt_clock_0 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 32500000UL, +}; + +/* From interrupt_controller */ +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, + .init_done = 0, + .interrupt_controller = 1, +}; + +/* From interrupt_controller */ +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) + +/* From interrupt_controller@2000000 */ +struct __metal_driver_sifive_clic0 __metal_dt_interrupt_controller_2000000 = { + .vtable = &__metal_driver_vtable_sifive_clic0, + .controller.vtable = &__metal_driver_vtable_sifive_clic0.clic_vtable, + .control_base = 33554432UL, + .control_size = 16777216UL, + .init_done = 0, + .num_interrupts = METAL_MAX_CLIC_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_lines[0] = 3, + .interrupt_lines[1] = 7, + .interrupt_lines[2] = 11, + .num_subinterrupts = 169UL, + .num_intbits = 4UL, + .max_levels = 16UL, + .interrupt_controller = 1, +}; + +/* From interrupt_controller@2000000 */ +#define __METAL_DT_SIFIVE_CLIC0_HANDLE (&__metal_dt_interrupt_controller_2000000.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_2000000_HANDLE (&__metal_dt_interrupt_controller_2000000.controller) + +/* From local_external_interrupts_0 */ +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, + .init_done = 0, +/* From interrupt_controller@2000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_2000000.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 26, + .interrupt_lines[1] = 27, + .interrupt_lines[2] = 28, + .interrupt_lines[3] = 29, + .interrupt_lines[4] = 30, + .interrupt_lines[5] = 31, + .interrupt_lines[6] = 32, + .interrupt_lines[7] = 33, + .interrupt_lines[8] = 34, + .interrupt_lines[9] = 35, + .interrupt_lines[10] = 36, + .interrupt_lines[11] = 37, + .interrupt_lines[12] = 38, + .interrupt_lines[13] = 39, + .interrupt_lines[14] = 40, + .interrupt_lines[15] = 41, + .interrupt_lines[16] = 42, + .interrupt_lines[17] = 43, + .interrupt_lines[18] = 44, + .interrupt_lines[19] = 45, + .interrupt_lines[20] = 46, + .interrupt_lines[21] = 47, + .interrupt_lines[22] = 48, + .interrupt_lines[23] = 49, + .interrupt_lines[24] = 50, + .interrupt_lines[25] = 51, + .interrupt_lines[26] = 52, + .interrupt_lines[27] = 53, + .interrupt_lines[28] = 54, + .interrupt_lines[29] = 55, + .interrupt_lines[30] = 56, + .interrupt_lines[31] = 57, + .interrupt_lines[32] = 58, + .interrupt_lines[33] = 59, + .interrupt_lines[34] = 60, + .interrupt_lines[35] = 61, + .interrupt_lines[36] = 62, + .interrupt_lines[37] = 63, + .interrupt_lines[38] = 64, + .interrupt_lines[39] = 65, + .interrupt_lines[40] = 66, + .interrupt_lines[41] = 67, + .interrupt_lines[42] = 68, + .interrupt_lines[43] = 69, + .interrupt_lines[44] = 70, + .interrupt_lines[45] = 71, + .interrupt_lines[46] = 72, + .interrupt_lines[47] = 73, + .interrupt_lines[48] = 74, + .interrupt_lines[49] = 75, + .interrupt_lines[50] = 76, + .interrupt_lines[51] = 77, + .interrupt_lines[52] = 78, + .interrupt_lines[53] = 79, + .interrupt_lines[54] = 80, + .interrupt_lines[55] = 81, + .interrupt_lines[56] = 82, + .interrupt_lines[57] = 83, + .interrupt_lines[58] = 84, + .interrupt_lines[59] = 85, + .interrupt_lines[60] = 86, + .interrupt_lines[61] = 87, + .interrupt_lines[62] = 88, + .interrupt_lines[63] = 89, + .interrupt_lines[64] = 90, + .interrupt_lines[65] = 91, + .interrupt_lines[66] = 92, + .interrupt_lines[67] = 93, + .interrupt_lines[68] = 94, + .interrupt_lines[69] = 95, + .interrupt_lines[70] = 96, + .interrupt_lines[71] = 97, + .interrupt_lines[72] = 98, + .interrupt_lines[73] = 99, + .interrupt_lines[74] = 100, + .interrupt_lines[75] = 101, + .interrupt_lines[76] = 102, + .interrupt_lines[77] = 103, + .interrupt_lines[78] = 104, + .interrupt_lines[79] = 105, + .interrupt_lines[80] = 106, + .interrupt_lines[81] = 107, + .interrupt_lines[82] = 108, + .interrupt_lines[83] = 109, + .interrupt_lines[84] = 110, + .interrupt_lines[85] = 111, + .interrupt_lines[86] = 112, + .interrupt_lines[87] = 113, + .interrupt_lines[88] = 114, + .interrupt_lines[89] = 115, + .interrupt_lines[90] = 116, + .interrupt_lines[91] = 117, + .interrupt_lines[92] = 118, + .interrupt_lines[93] = 119, + .interrupt_lines[94] = 120, + .interrupt_lines[95] = 121, + .interrupt_lines[96] = 122, + .interrupt_lines[97] = 123, + .interrupt_lines[98] = 124, + .interrupt_lines[99] = 125, + .interrupt_lines[100] = 126, + .interrupt_lines[101] = 127, + .interrupt_lines[102] = 128, + .interrupt_lines[103] = 129, + .interrupt_lines[104] = 130, + .interrupt_lines[105] = 131, + .interrupt_lines[106] = 132, + .interrupt_lines[107] = 133, + .interrupt_lines[108] = 134, + .interrupt_lines[109] = 135, + .interrupt_lines[110] = 136, + .interrupt_lines[111] = 137, + .interrupt_lines[112] = 138, + .interrupt_lines[113] = 139, + .interrupt_lines[114] = 140, + .interrupt_lines[115] = 141, + .interrupt_lines[116] = 142, + .interrupt_lines[117] = 143, + .interrupt_lines[118] = 144, + .interrupt_lines[119] = 145, + .interrupt_lines[120] = 146, + .interrupt_lines[121] = 147, + .interrupt_lines[122] = 148, + .interrupt_lines[123] = 149, + .interrupt_lines[124] = 150, + .interrupt_lines[125] = 151, + .interrupt_lines[126] = 152, +}; + +/* From local_external_interrupts_0 */ +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +/* From global_external_interrupts */ +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts = { + .vtable = &__metal_driver_vtable_sifive_global_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_global_external_interrupts0.global0_vtable, + .init_done = 0, +/* From interrupt_controller@2000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_2000000.controller, + .num_interrupts = METAL_MAX_GLOBAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 22, + .interrupt_lines[1] = 23, + .interrupt_lines[2] = 24, + .interrupt_lines[3] = 25, +}; + +/* From global_external_interrupts */ +#define __METAL_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__metal_dt_global_external_interrupts.irc) + +#define __METAL_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__metal_dt_global_external_interrupts.irc) + +/* From gpio@20002000 */ +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000 = { + .vtable = &__metal_driver_vtable_sifive_gpio0, + .base = 536879104UL, + .size = 4096UL, +/* From interrupt_controller@2000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_2000000.controller, + .num_interrupts = METAL_MAX_GPIO_INTERRUPTS, + .interrupt_lines[0] = 0, + .interrupt_lines[1] = 1, + .interrupt_lines[2] = 2, + .interrupt_lines[3] = 3, + .interrupt_lines[4] = 4, + .interrupt_lines[5] = 5, + .interrupt_lines[6] = 6, + .interrupt_lines[7] = 7, + .interrupt_lines[8] = 8, + .interrupt_lines[9] = 9, + .interrupt_lines[10] = 10, + .interrupt_lines[11] = 11, + .interrupt_lines[12] = 12, + .interrupt_lines[13] = 13, + .interrupt_lines[14] = 14, + .interrupt_lines[15] = 15, +}; + +/* From serial@20000000 */ +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000 = { + .vtable = &__metal_driver_vtable_sifive_uart0, + .uart.vtable = &__metal_driver_vtable_sifive_uart0.uart, + .control_base = 536870912UL, + .control_size = 4096UL, +/* From clock@0 */ + .clock = &__metal_dt_clock_0.clock, + .pinmux = NULL, +/* From interrupt_controller@2000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_2000000.controller, + .num_interrupts = METAL_MAX_UART_INTERRUPTS, + .interrupt_line = 16UL, +}; + +/* From led@0red */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 0UL, + .label = "LD0red", +}; + +/* From led@0green */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 1UL, + .label = "LD0green", +}; + +/* From led@0blue */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 2UL, + .label = "LD0blue", +}; + +/* From button@0 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_0 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 4UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 9UL, + .label = "BTN0", +}; + +/* From button@1 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_1 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 5UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 10UL, + .label = "BTN1", +}; + +/* From button@2 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_2 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 6UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 11UL, + .label = "BTN2", +}; + +/* From button@3 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_3 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 7UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 12UL, + .label = "BTN3", +}; + +/* From switch@0 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 0UL, + .label = "SW0", +}; + +/* From switch@1 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 1UL, + .label = "SW1", +}; + +/* From switch@2 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 2UL, + .label = "SW2", +}; + +/* From switch@3 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 8UL, + .label = "SW3", +}; + +/* From teststatus@4000 */ +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000 = { + .vtable = &__metal_driver_vtable_sifive_test0, + .shutdown.vtable = &__metal_driver_vtable_sifive_test0.shutdown, + .base = 16384UL, + .size = 4096UL, +}; + +/* From teststatus@4000 */ +#define __METAL_DT_SHUTDOWN_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +#define __METAL_DT_TESTSTATUS_4000_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +/* From serial@20000000 */ +#define __METAL_DT_STDOUT_UART_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_SERIAL_20000000_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_STDOUT_UART_BAUD 115200 + +#define __METAL_DT_MAX_HARTS 1 + +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; + +#define __METAL_DT_MAX_LEDS 3 + +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { + &__metal_dt_led_0red, + &__metal_dt_led_0green, + &__metal_dt_led_0blue}; + +#define __METAL_DT_MAX_BUTTONS 4 + +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { + &__metal_dt_button_0, + &__metal_dt_button_1, + &__metal_dt_button_2, + &__metal_dt_button_3}; + +#define __METAL_DT_MAX_SWITCHES 4 + +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { + &__metal_dt_switch_0, + &__metal_dt_switch_1, + &__metal_dt_switch_2, + &__metal_dt_switch_3}; + +#endif + +#endif /*METAL__MACHINE__COREIP_E24_ARTY__METAL_H*/ + +#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-e24-arty/mee.lds b/bsp/coreip-e24-arty/metal.lds index 11d42ea..ea41b72 100644 --- a/bsp/coreip-e24-arty/mee.lds +++ b/bsp/coreip-e24-arty/metal.lds @@ -25,7 +25,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >flash AT>flash :flash @@ -124,14 +124,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >flash AT>flash :flash .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >ram AT>flash :ram_init @@ -141,21 +141,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >flash AT>flash :flash .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>flash :ram_init @@ -179,10 +179,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -199,24 +199,24 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; . = __heap_size == 0 ? 0 : ORIGIN(ram) + LENGTH(ram); - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/coreip-e31-arty/design.dts b/bsp/coreip-e31-arty/design.dts index 96698e9..c69740e 100644 --- a/bsp/coreip-e31-arty/design.dts +++ b/bsp/coreip-e31-arty/design.dts @@ -8,7 +8,7 @@ chosen { stdout-path = "/soc/serial@20000000:115200"; - mee,entry = <&L12 0x400000>; + metal,entry = <&L12 0x400000>; }; L17: cpus { diff --git a/bsp/coreip-e31-arty/mee.h b/bsp/coreip-e31-arty/mee.h deleted file mode 100644 index a332c2d..0000000 --- a/bsp/coreip-e31-arty/mee.h +++ /dev/null @@ -1,479 +0,0 @@ -#ifndef ASSEMBLY - -#ifndef COREIP_E31_ARTY__MEE_H -#define COREIP_E31_ARTY__MEE_H - -#ifdef __MEE_MACHINE_MACROS -/* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 -#endif -#endif - -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS - -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS - -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS - -#define __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 -#define MEE_MAX_GLOBAL_EXT_INTERRUPTS __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS - -#define __MEE_GPIO_20002000_INTERRUPTS 16 -#define MEE_MAX_GPIO_INTERRUPTS __MEE_GPIO_20002000_INTERRUPTS - -#define __MEE_SERIAL_20000000_INTERRUPTS 1 -#define MEE_MAX_UART_INTERRUPTS 1 - -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/drivers/fixed-clock.h> -#include <mee/drivers/sifive,gpio0.h> -#include <mee/drivers/sifive,uart0.h> -#include <mee/pmp.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -#include <mee/drivers/sifive,global-external-interrupts0.h> -#include <mee/drivers/sifive,gpio-leds.h> -#include <mee/drivers/sifive,gpio-buttons.h> -#include <mee/drivers/sifive,gpio-switches.h> -#include <mee/drivers/sifive,test0.h> -/* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; - -/* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; - -/* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; - -/* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; - -/* From clock@0 */ -asm (".weak __mee_dt_clock_0"); -struct __mee_driver_fixed_clock __mee_dt_clock_0; - -/* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; - -/* From global_external_interrupts */ -asm (".weak __mee_dt_global_external_interrupts"); -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts; - -/* From gpio@20002000 */ -asm (".weak __mee_dt_gpio_20002000"); -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000; - -/* From serial@20000000 */ -asm (".weak __mee_dt_serial_20000000"); -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000; - -asm (".weak __mee_dt_pmp_0"); -struct mee_pmp __mee_dt_pmp_0; - -/* From led@0red */ -asm (".weak __mee_dt_led_0red"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red; - -/* From led@0green */ -asm (".weak __mee_dt_led_0green"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green; - -/* From led@0blue */ -asm (".weak __mee_dt_led_0blue"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue; - -/* From button@0 */ -asm (".weak __mee_dt_button_0"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_0; - -/* From button@1 */ -asm (".weak __mee_dt_button_1"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_1; - -/* From button@2 */ -asm (".weak __mee_dt_button_2"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_2; - -/* From button@3 */ -asm (".weak __mee_dt_button_3"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_3; - -/* From switch@0 */ -asm (".weak __mee_dt_switch_0"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0; - -/* From switch@1 */ -asm (".weak __mee_dt_switch_1"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1; - -/* From switch@2 */ -asm (".weak __mee_dt_switch_2"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2; - -/* From switch@3 */ -asm (".weak __mee_dt_switch_3"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3; - -/* From teststatus@4000 */ -asm (".weak __mee_dt_teststatus_4000"); -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000; - -/* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, - .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, -}; - -/* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) - -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) - -/* From clock@0 */ -struct __mee_driver_fixed_clock __mee_dt_clock_0 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 32500000UL, -}; - -/* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, - .init_done = 0, - .interrupt_controller = 1, -}; - -/* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) - -/* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, - .control_base = 33554432UL, - .control_size = 65536UL, - .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_lines[0] = 3, - .interrupt_lines[1] = 7, -}; - -/* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) - -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) - -/* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 16, - .interrupt_lines[1] = 17, - .interrupt_lines[2] = 18, - .interrupt_lines[3] = 19, - .interrupt_lines[4] = 20, - .interrupt_lines[5] = 21, - .interrupt_lines[6] = 22, - .interrupt_lines[7] = 23, - .interrupt_lines[8] = 24, - .interrupt_lines[9] = 25, - .interrupt_lines[10] = 26, - .interrupt_lines[11] = 27, - .interrupt_lines[12] = 28, - .interrupt_lines[13] = 29, - .interrupt_lines[14] = 30, - .interrupt_lines[15] = 31, -}; - -/* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -/* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_line = 11UL, - .control_base = 201326592UL, - .control_size = 67108864UL, - .max_priority = 7UL, - .num_interrupts = 26UL, - .interrupt_controller = 1, -}; - -/* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -/* From global_external_interrupts */ -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts = { - .vtable = &__mee_driver_vtable_sifive_global_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_global_external_interrupts0.global0_vtable, - .init_done = 0, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GLOBAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 1, - .interrupt_lines[1] = 2, - .interrupt_lines[2] = 3, - .interrupt_lines[3] = 4, -}; - -/* From global_external_interrupts */ -#define __MEE_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__mee_dt_global_external_interrupts.irc) - -#define __MEE_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__mee_dt_global_external_interrupts.irc) - -/* From gpio@20002000 */ -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000 = { - .vtable = &__mee_driver_vtable_sifive_gpio0, - .base = 536879104UL, - .size = 4096UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GPIO_INTERRUPTS, - .interrupt_lines[0] = 7, - .interrupt_lines[1] = 8, - .interrupt_lines[2] = 9, - .interrupt_lines[3] = 10, - .interrupt_lines[4] = 11, - .interrupt_lines[5] = 12, - .interrupt_lines[6] = 13, - .interrupt_lines[7] = 14, - .interrupt_lines[8] = 15, - .interrupt_lines[9] = 16, - .interrupt_lines[10] = 17, - .interrupt_lines[11] = 18, - .interrupt_lines[12] = 19, - .interrupt_lines[13] = 20, - .interrupt_lines[14] = 21, - .interrupt_lines[15] = 22, -}; - -/* From serial@20000000 */ -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000 = { - .vtable = &__mee_driver_vtable_sifive_uart0, - .uart.vtable = &__mee_driver_vtable_sifive_uart0.uart, - .control_base = 536870912UL, - .control_size = 4096UL, -/* From clock@0 */ - .clock = &__mee_dt_clock_0.clock, - .pinmux = NULL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_UART_INTERRUPTS, - .interrupt_line = 5UL, -}; - -/* From led@0red */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 0UL, - .label = "LD0red", -}; - -/* From led@0green */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 1UL, - .label = "LD0green", -}; - -/* From led@0blue */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 2UL, - .label = "LD0blue", -}; - -/* From button@0 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_0 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 4UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 4UL, - .label = "BTN0", -}; - -/* From button@1 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_1 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 5UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 5UL, - .label = "BTN1", -}; - -/* From button@2 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_2 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 6UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 6UL, - .label = "BTN2", -}; - -/* From button@3 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_3 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 7UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 7UL, - .label = "BTN3", -}; - -/* From switch@0 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 0UL, - .label = "SW0", -}; - -/* From switch@1 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 1UL, - .label = "SW1", -}; - -/* From switch@2 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 2UL, - .label = "SW2", -}; - -/* From switch@3 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 3UL, - .label = "SW3", -}; - -/* From pmp@0 */ -struct mee_pmp __mee_dt_pmp_0 = { - .num_regions = 8UL, -}; - -#define __MEE_DT_PMP_HANDLE (&__mee_dt_pmp_0) - -/* From teststatus@4000 */ -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000 = { - .vtable = &__mee_driver_vtable_sifive_test0, - .shutdown.vtable = &__mee_driver_vtable_sifive_test0.shutdown, - .base = 16384UL, - .size = 4096UL, -}; - -/* From teststatus@4000 */ -#define __MEE_DT_SHUTDOWN_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -#define __MEE_DT_TESTSTATUS_4000_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -/* From serial@20000000 */ -#define __MEE_DT_STDOUT_UART_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_SERIAL_20000000_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_STDOUT_UART_BAUD 115200 - -#define __MEE_DT_MAX_HARTS 1 - -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; - -#define __MEE_DT_MAX_LEDS 3 - -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { - &__mee_dt_led_0red, - &__mee_dt_led_0green, - &__mee_dt_led_0blue}; - -#define __MEE_DT_MAX_BUTTONS 4 - -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { - &__mee_dt_button_0, - &__mee_dt_button_1, - &__mee_dt_button_2, - &__mee_dt_button_3}; - -#define __MEE_DT_MAX_SWITCHES 4 - -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { - &__mee_dt_switch_0, - &__mee_dt_switch_1, - &__mee_dt_switch_2, - &__mee_dt_switch_3}; - -#endif - -#endif /*MEE__MACHINE__COREIP_E31_ARTY__MEE_H*/ - -#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-e31-arty/metal.h b/bsp/coreip-e31-arty/metal.h new file mode 100644 index 0000000..564414b --- /dev/null +++ b/bsp/coreip-e31-arty/metal.h @@ -0,0 +1,479 @@ +#ifndef ASSEMBLY + +#ifndef COREIP_E31_ARTY__METAL_H +#define COREIP_E31_ARTY__METAL_H + +#ifdef __METAL_MACHINE_MACROS +/* To Satisfy libmetal build */ +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 +#endif +#endif + +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS + +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS + +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS + +#define __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 +#define METAL_MAX_GLOBAL_EXT_INTERRUPTS __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS + +#define __METAL_GPIO_20002000_INTERRUPTS 16 +#define METAL_MAX_GPIO_INTERRUPTS __METAL_GPIO_20002000_INTERRUPTS + +#define __METAL_SERIAL_20000000_INTERRUPTS 1 +#define METAL_MAX_UART_INTERRUPTS 1 + +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/drivers/fixed-clock.h> +#include <metal/drivers/sifive,gpio0.h> +#include <metal/drivers/sifive,uart0.h> +#include <metal/pmp.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +#include <metal/drivers/sifive,global-external-interrupts0.h> +#include <metal/drivers/sifive,gpio-leds.h> +#include <metal/drivers/sifive,gpio-buttons.h> +#include <metal/drivers/sifive,gpio-switches.h> +#include <metal/drivers/sifive,test0.h> +/* From cpu@0 */ +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; + +/* From clint@2000000 */ +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; + +/* From interrupt_controller@c000000 */ +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; + +/* From interrupt_controller */ +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; + +/* From clock@0 */ +asm (".weak __metal_dt_clock_0"); +struct __metal_driver_fixed_clock __metal_dt_clock_0; + +/* From local_external_interrupts_0 */ +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; + +/* From global_external_interrupts */ +asm (".weak __metal_dt_global_external_interrupts"); +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts; + +/* From gpio@20002000 */ +asm (".weak __metal_dt_gpio_20002000"); +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000; + +/* From serial@20000000 */ +asm (".weak __metal_dt_serial_20000000"); +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000; + +asm (".weak __metal_dt_pmp_0"); +struct metal_pmp __metal_dt_pmp_0; + +/* From led@0red */ +asm (".weak __metal_dt_led_0red"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red; + +/* From led@0green */ +asm (".weak __metal_dt_led_0green"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green; + +/* From led@0blue */ +asm (".weak __metal_dt_led_0blue"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue; + +/* From button@0 */ +asm (".weak __metal_dt_button_0"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_0; + +/* From button@1 */ +asm (".weak __metal_dt_button_1"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_1; + +/* From button@2 */ +asm (".weak __metal_dt_button_2"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_2; + +/* From button@3 */ +asm (".weak __metal_dt_button_3"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_3; + +/* From switch@0 */ +asm (".weak __metal_dt_switch_0"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0; + +/* From switch@1 */ +asm (".weak __metal_dt_switch_1"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1; + +/* From switch@2 */ +asm (".weak __metal_dt_switch_2"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2; + +/* From switch@3 */ +asm (".weak __metal_dt_switch_3"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3; + +/* From teststatus@4000 */ +asm (".weak __metal_dt_teststatus_4000"); +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000; + +/* From cpu@0 */ +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, + .timebase = 1000000UL, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, +}; + +/* From cpu@0 */ +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) + +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) + +/* From clock@0 */ +struct __metal_driver_fixed_clock __metal_dt_clock_0 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 32500000UL, +}; + +/* From interrupt_controller */ +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, + .init_done = 0, + .interrupt_controller = 1, +}; + +/* From interrupt_controller */ +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) + +/* From clint@2000000 */ +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, + .control_base = 33554432UL, + .control_size = 65536UL, + .init_done = 0, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_lines[0] = 3, + .interrupt_lines[1] = 7, +}; + +/* From clint@2000000 */ +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) + +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) + +/* From local_external_interrupts_0 */ +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 16, + .interrupt_lines[1] = 17, + .interrupt_lines[2] = 18, + .interrupt_lines[3] = 19, + .interrupt_lines[4] = 20, + .interrupt_lines[5] = 21, + .interrupt_lines[6] = 22, + .interrupt_lines[7] = 23, + .interrupt_lines[8] = 24, + .interrupt_lines[9] = 25, + .interrupt_lines[10] = 26, + .interrupt_lines[11] = 27, + .interrupt_lines[12] = 28, + .interrupt_lines[13] = 29, + .interrupt_lines[14] = 30, + .interrupt_lines[15] = 31, +}; + +/* From local_external_interrupts_0 */ +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +/* From interrupt_controller@c000000 */ +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_line = 11UL, + .control_base = 201326592UL, + .control_size = 67108864UL, + .max_priority = 7UL, + .num_interrupts = 26UL, + .interrupt_controller = 1, +}; + +/* From interrupt_controller@c000000 */ +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +/* From global_external_interrupts */ +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts = { + .vtable = &__metal_driver_vtable_sifive_global_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_global_external_interrupts0.global0_vtable, + .init_done = 0, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GLOBAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 1, + .interrupt_lines[1] = 2, + .interrupt_lines[2] = 3, + .interrupt_lines[3] = 4, +}; + +/* From global_external_interrupts */ +#define __METAL_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__metal_dt_global_external_interrupts.irc) + +#define __METAL_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__metal_dt_global_external_interrupts.irc) + +/* From gpio@20002000 */ +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000 = { + .vtable = &__metal_driver_vtable_sifive_gpio0, + .base = 536879104UL, + .size = 4096UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GPIO_INTERRUPTS, + .interrupt_lines[0] = 7, + .interrupt_lines[1] = 8, + .interrupt_lines[2] = 9, + .interrupt_lines[3] = 10, + .interrupt_lines[4] = 11, + .interrupt_lines[5] = 12, + .interrupt_lines[6] = 13, + .interrupt_lines[7] = 14, + .interrupt_lines[8] = 15, + .interrupt_lines[9] = 16, + .interrupt_lines[10] = 17, + .interrupt_lines[11] = 18, + .interrupt_lines[12] = 19, + .interrupt_lines[13] = 20, + .interrupt_lines[14] = 21, + .interrupt_lines[15] = 22, +}; + +/* From serial@20000000 */ +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000 = { + .vtable = &__metal_driver_vtable_sifive_uart0, + .uart.vtable = &__metal_driver_vtable_sifive_uart0.uart, + .control_base = 536870912UL, + .control_size = 4096UL, +/* From clock@0 */ + .clock = &__metal_dt_clock_0.clock, + .pinmux = NULL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_UART_INTERRUPTS, + .interrupt_line = 5UL, +}; + +/* From led@0red */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 0UL, + .label = "LD0red", +}; + +/* From led@0green */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 1UL, + .label = "LD0green", +}; + +/* From led@0blue */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 2UL, + .label = "LD0blue", +}; + +/* From button@0 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_0 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 4UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 4UL, + .label = "BTN0", +}; + +/* From button@1 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_1 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 5UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 5UL, + .label = "BTN1", +}; + +/* From button@2 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_2 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 6UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 6UL, + .label = "BTN2", +}; + +/* From button@3 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_3 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 7UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 7UL, + .label = "BTN3", +}; + +/* From switch@0 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 0UL, + .label = "SW0", +}; + +/* From switch@1 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 1UL, + .label = "SW1", +}; + +/* From switch@2 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 2UL, + .label = "SW2", +}; + +/* From switch@3 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 3UL, + .label = "SW3", +}; + +/* From pmp@0 */ +struct metal_pmp __metal_dt_pmp_0 = { + .num_regions = 8UL, +}; + +#define __METAL_DT_PMP_HANDLE (&__metal_dt_pmp_0) + +/* From teststatus@4000 */ +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000 = { + .vtable = &__metal_driver_vtable_sifive_test0, + .shutdown.vtable = &__metal_driver_vtable_sifive_test0.shutdown, + .base = 16384UL, + .size = 4096UL, +}; + +/* From teststatus@4000 */ +#define __METAL_DT_SHUTDOWN_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +#define __METAL_DT_TESTSTATUS_4000_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +/* From serial@20000000 */ +#define __METAL_DT_STDOUT_UART_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_SERIAL_20000000_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_STDOUT_UART_BAUD 115200 + +#define __METAL_DT_MAX_HARTS 1 + +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; + +#define __METAL_DT_MAX_LEDS 3 + +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { + &__metal_dt_led_0red, + &__metal_dt_led_0green, + &__metal_dt_led_0blue}; + +#define __METAL_DT_MAX_BUTTONS 4 + +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { + &__metal_dt_button_0, + &__metal_dt_button_1, + &__metal_dt_button_2, + &__metal_dt_button_3}; + +#define __METAL_DT_MAX_SWITCHES 4 + +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { + &__metal_dt_switch_0, + &__metal_dt_switch_1, + &__metal_dt_switch_2, + &__metal_dt_switch_3}; + +#endif + +#endif /*METAL__MACHINE__COREIP_E31_ARTY__METAL_H*/ + +#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-s51-arty/mee.lds b/bsp/coreip-e31-arty/metal.lds index 7b28478..28a7849 100644 --- a/bsp/coreip-s51-arty/mee.lds +++ b/bsp/coreip-e31-arty/metal.lds @@ -26,7 +26,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >flash AT>flash :flash @@ -124,14 +124,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >flash AT>flash :flash .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >itim AT>flash :itim_init @@ -142,21 +142,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >flash AT>flash :flash .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>flash :ram_init @@ -180,10 +180,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -200,24 +200,24 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; . = __heap_size == 0 ? 0 : ORIGIN(ram) + LENGTH(ram); - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/coreip-e31/mee.h b/bsp/coreip-e31/metal.h index 5c59432..cf0fb4f 100644 --- a/bsp/coreip-e31/mee.h +++ b/bsp/coreip-e31/metal.h @@ -1,118 +1,118 @@ #ifndef ASSEMBLY -#ifndef COREIP_E31__MEE_H -#define COREIP_E31__MEE_H +#ifndef COREIP_E31__METAL_H +#define COREIP_E31__METAL_H -#ifdef __MEE_MACHINE_MACROS +#ifdef __METAL_MACHINE_MACROS /* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 #endif #endif -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS -#define __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 127 -#define MEE_MAX_GLOBAL_EXT_INTERRUPTS __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS +#define __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 127 +#define METAL_MAX_GLOBAL_EXT_INTERRUPTS __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/pmp.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -#include <mee/drivers/sifive,global-external-interrupts0.h> -#include <mee/drivers/sifive,test0.h> +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/pmp.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +#include <metal/drivers/sifive,global-external-interrupts0.h> +#include <metal/drivers/sifive,test0.h> /* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; /* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; /* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; /* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; /* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; /* From global_external_interrupts */ -asm (".weak __mee_dt_global_external_interrupts"); -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts; +asm (".weak __metal_dt_global_external_interrupts"); +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts; -asm (".weak __mee_dt_pmp_0"); -struct mee_pmp __mee_dt_pmp_0; +asm (".weak __metal_dt_pmp_0"); +struct metal_pmp __metal_dt_pmp_0; /* From teststatus@4000 */ -asm (".weak __mee_dt_teststatus_4000"); -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000; +asm (".weak __metal_dt_teststatus_4000"); +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000; /* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, }; /* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) /* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, .init_done = 0, .interrupt_controller = 1, }; /* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) /* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, .control_base = 33554432UL, .control_size = 65536UL, .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, .interrupt_lines[0] = 3, .interrupt_lines[1] = 7, }; /* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) /* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, .init_done = 0, /* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, .interrupt_lines[0] = 16, .interrupt_lines[1] = 17, .interrupt_lines[2] = 18, @@ -132,17 +132,17 @@ struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_in }; /* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) /* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, .init_done = 0, /* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, .interrupt_line = 11UL, .control_base = 201326592UL, .control_size = 67108864UL, @@ -152,18 +152,18 @@ struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { }; /* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) /* From global_external_interrupts */ -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts = { - .vtable = &__mee_driver_vtable_sifive_global_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_global_external_interrupts0.global0_vtable, +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts = { + .vtable = &__metal_driver_vtable_sifive_global_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_global_external_interrupts0.global0_vtable, .init_done = 0, /* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GLOBAL_EXT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GLOBAL_EXT_INTERRUPTS, .interrupt_lines[0] = 1, .interrupt_lines[1] = 2, .interrupt_lines[2] = 3, @@ -294,53 +294,53 @@ struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_ }; /* From global_external_interrupts */ -#define __MEE_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__mee_dt_global_external_interrupts.irc) +#define __METAL_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__metal_dt_global_external_interrupts.irc) -#define __MEE_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__mee_dt_global_external_interrupts.irc) +#define __METAL_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__metal_dt_global_external_interrupts.irc) /* From pmp@0 */ -struct mee_pmp __mee_dt_pmp_0 = { +struct metal_pmp __metal_dt_pmp_0 = { .num_regions = 8UL, }; -#define __MEE_DT_PMP_HANDLE (&__mee_dt_pmp_0) +#define __METAL_DT_PMP_HANDLE (&__metal_dt_pmp_0) /* From teststatus@4000 */ -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000 = { - .vtable = &__mee_driver_vtable_sifive_test0, - .shutdown.vtable = &__mee_driver_vtable_sifive_test0.shutdown, +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000 = { + .vtable = &__metal_driver_vtable_sifive_test0, + .shutdown.vtable = &__metal_driver_vtable_sifive_test0.shutdown, .base = 16384UL, .size = 4096UL, }; /* From teststatus@4000 */ -#define __MEE_DT_SHUTDOWN_HANDLE (&__mee_dt_teststatus_4000.shutdown) +#define __METAL_DT_SHUTDOWN_HANDLE (&__metal_dt_teststatus_4000.shutdown) -#define __MEE_DT_TESTSTATUS_4000_HANDLE (&__mee_dt_teststatus_4000.shutdown) +#define __METAL_DT_TESTSTATUS_4000_HANDLE (&__metal_dt_teststatus_4000.shutdown) -#define __MEE_DT_MAX_HARTS 1 +#define __METAL_DT_MAX_HARTS 1 -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; -#define __MEE_DT_MAX_LEDS 0 +#define __METAL_DT_MAX_LEDS 0 -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { NULL }; -#define __MEE_DT_MAX_BUTTONS 0 +#define __METAL_DT_MAX_BUTTONS 0 -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { NULL }; -#define __MEE_DT_MAX_SWITCHES 0 +#define __METAL_DT_MAX_SWITCHES 0 -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { NULL }; #endif -#endif /*MEE__MACHINE__COREIP_E31__MEE_H*/ +#endif /*METAL__MACHINE__COREIP_E31__METAL_H*/ #endif/*ASSEMBLY*/ diff --git a/bsp/coreip-e31/mee.lds b/bsp/coreip-e31/metal.lds index 08c0ccf..11c32e0 100644 --- a/bsp/coreip-e31/mee.lds +++ b/bsp/coreip-e31/metal.lds @@ -25,7 +25,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >ram AT>ram :ram @@ -123,14 +123,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >ram AT>ram :ram .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >itim AT>ram :itim_init @@ -141,21 +141,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >ram AT>ram :ram .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>ram :ram_init @@ -179,10 +179,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -199,23 +199,23 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/coreip-s51-arty/design.dts b/bsp/coreip-s51-arty/design.dts index ea349bb..6c7379d 100644 --- a/bsp/coreip-s51-arty/design.dts +++ b/bsp/coreip-s51-arty/design.dts @@ -8,7 +8,7 @@ chosen { stdout-path = "/soc/serial@20000000:115200"; - mee,entry = <&L12 0x400000>; + metal,entry = <&L12 0x400000>; }; L17: cpus { diff --git a/bsp/coreip-s51-arty/mee.h b/bsp/coreip-s51-arty/mee.h deleted file mode 100644 index b2fb9d2..0000000 --- a/bsp/coreip-s51-arty/mee.h +++ /dev/null @@ -1,479 +0,0 @@ -#ifndef ASSEMBLY - -#ifndef COREIP_S51_ARTY__MEE_H -#define COREIP_S51_ARTY__MEE_H - -#ifdef __MEE_MACHINE_MACROS -/* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 -#endif -#endif - -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS - -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS - -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS - -#define __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 -#define MEE_MAX_GLOBAL_EXT_INTERRUPTS __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS - -#define __MEE_GPIO_20002000_INTERRUPTS 16 -#define MEE_MAX_GPIO_INTERRUPTS __MEE_GPIO_20002000_INTERRUPTS - -#define __MEE_SERIAL_20000000_INTERRUPTS 1 -#define MEE_MAX_UART_INTERRUPTS 1 - -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/drivers/fixed-clock.h> -#include <mee/drivers/sifive,gpio0.h> -#include <mee/drivers/sifive,uart0.h> -#include <mee/pmp.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -#include <mee/drivers/sifive,global-external-interrupts0.h> -#include <mee/drivers/sifive,gpio-leds.h> -#include <mee/drivers/sifive,gpio-buttons.h> -#include <mee/drivers/sifive,gpio-switches.h> -#include <mee/drivers/sifive,test0.h> -/* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; - -/* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; - -/* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; - -/* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; - -/* From clock@0 */ -asm (".weak __mee_dt_clock_0"); -struct __mee_driver_fixed_clock __mee_dt_clock_0; - -/* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; - -/* From global_external_interrupts */ -asm (".weak __mee_dt_global_external_interrupts"); -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts; - -/* From gpio@20002000 */ -asm (".weak __mee_dt_gpio_20002000"); -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000; - -/* From serial@20000000 */ -asm (".weak __mee_dt_serial_20000000"); -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000; - -asm (".weak __mee_dt_pmp_0"); -struct mee_pmp __mee_dt_pmp_0; - -/* From led@0red */ -asm (".weak __mee_dt_led_0red"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red; - -/* From led@0green */ -asm (".weak __mee_dt_led_0green"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green; - -/* From led@0blue */ -asm (".weak __mee_dt_led_0blue"); -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue; - -/* From button@0 */ -asm (".weak __mee_dt_button_0"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_0; - -/* From button@1 */ -asm (".weak __mee_dt_button_1"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_1; - -/* From button@2 */ -asm (".weak __mee_dt_button_2"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_2; - -/* From button@3 */ -asm (".weak __mee_dt_button_3"); -struct __mee_driver_sifive_gpio_button __mee_dt_button_3; - -/* From switch@0 */ -asm (".weak __mee_dt_switch_0"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0; - -/* From switch@1 */ -asm (".weak __mee_dt_switch_1"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1; - -/* From switch@2 */ -asm (".weak __mee_dt_switch_2"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2; - -/* From switch@3 */ -asm (".weak __mee_dt_switch_3"); -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3; - -/* From teststatus@4000 */ -asm (".weak __mee_dt_teststatus_4000"); -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000; - -/* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, - .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, -}; - -/* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) - -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) - -/* From clock@0 */ -struct __mee_driver_fixed_clock __mee_dt_clock_0 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 32500000UL, -}; - -/* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, - .init_done = 0, - .interrupt_controller = 1, -}; - -/* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) - -/* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, - .control_base = 33554432UL, - .control_size = 65536UL, - .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_lines[0] = 3, - .interrupt_lines[1] = 7, -}; - -/* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) - -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) - -/* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 16, - .interrupt_lines[1] = 17, - .interrupt_lines[2] = 18, - .interrupt_lines[3] = 19, - .interrupt_lines[4] = 20, - .interrupt_lines[5] = 21, - .interrupt_lines[6] = 22, - .interrupt_lines[7] = 23, - .interrupt_lines[8] = 24, - .interrupt_lines[9] = 25, - .interrupt_lines[10] = 26, - .interrupt_lines[11] = 27, - .interrupt_lines[12] = 28, - .interrupt_lines[13] = 29, - .interrupt_lines[14] = 30, - .interrupt_lines[15] = 31, -}; - -/* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -/* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_line = 11UL, - .control_base = 201326592UL, - .control_size = 67108864UL, - .max_priority = 7UL, - .num_interrupts = 26UL, - .interrupt_controller = 1, -}; - -/* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -/* From global_external_interrupts */ -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts = { - .vtable = &__mee_driver_vtable_sifive_global_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_global_external_interrupts0.global0_vtable, - .init_done = 0, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GLOBAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 1, - .interrupt_lines[1] = 2, - .interrupt_lines[2] = 3, - .interrupt_lines[3] = 4, -}; - -/* From global_external_interrupts */ -#define __MEE_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__mee_dt_global_external_interrupts.irc) - -#define __MEE_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__mee_dt_global_external_interrupts.irc) - -/* From gpio@20002000 */ -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_20002000 = { - .vtable = &__mee_driver_vtable_sifive_gpio0, - .base = 536879104UL, - .size = 4096UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GPIO_INTERRUPTS, - .interrupt_lines[0] = 7, - .interrupt_lines[1] = 8, - .interrupt_lines[2] = 9, - .interrupt_lines[3] = 10, - .interrupt_lines[4] = 11, - .interrupt_lines[5] = 12, - .interrupt_lines[6] = 13, - .interrupt_lines[7] = 14, - .interrupt_lines[8] = 15, - .interrupt_lines[9] = 16, - .interrupt_lines[10] = 17, - .interrupt_lines[11] = 18, - .interrupt_lines[12] = 19, - .interrupt_lines[13] = 20, - .interrupt_lines[14] = 21, - .interrupt_lines[15] = 22, -}; - -/* From serial@20000000 */ -struct __mee_driver_sifive_uart0 __mee_dt_serial_20000000 = { - .vtable = &__mee_driver_vtable_sifive_uart0, - .uart.vtable = &__mee_driver_vtable_sifive_uart0.uart, - .control_base = 536870912UL, - .control_size = 4096UL, -/* From clock@0 */ - .clock = &__mee_dt_clock_0.clock, - .pinmux = NULL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_UART_INTERRUPTS, - .interrupt_line = 5UL, -}; - -/* From led@0red */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0red = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 0UL, - .label = "LD0red", -}; - -/* From led@0green */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0green = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 1UL, - .label = "LD0green", -}; - -/* From led@0blue */ -struct __mee_driver_sifive_gpio_led __mee_dt_led_0blue = { - .vtable = &__mee_driver_vtable_sifive_led, - .led.vtable = &__mee_driver_vtable_sifive_led.led_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 2UL, - .label = "LD0blue", -}; - -/* From button@0 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_0 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 4UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 4UL, - .label = "BTN0", -}; - -/* From button@1 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_1 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 5UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 5UL, - .label = "BTN1", -}; - -/* From button@2 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_2 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 6UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 6UL, - .label = "BTN2", -}; - -/* From button@3 */ -struct __mee_driver_sifive_gpio_button __mee_dt_button_3 = { - .vtable = &__mee_driver_vtable_sifive_button, - .button.vtable = &__mee_driver_vtable_sifive_button.button_vtable, -/* From gpio@20002000 */ - .gpio = &__mee_dt_gpio_20002000, - .pin = 7UL, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 7UL, - .label = "BTN3", -}; - -/* From switch@0 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_0 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 0UL, - .label = "SW0", -}; - -/* From switch@1 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_1 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 1UL, - .label = "SW1", -}; - -/* From switch@2 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_2 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From global_external_interrupts */ - .interrupt_parent = &__mee_dt_global_external_interrupts.irc, - .interrupt_line = 2UL, - .label = "SW2", -}; - -/* From switch@3 */ -struct __mee_driver_sifive_gpio_switch __mee_dt_switch_3 = { - .vtable = &__mee_driver_vtable_sifive_switch, - .flip.vtable = &__mee_driver_vtable_sifive_switch.switch_vtable, -/* From local_external_interrupts_0 */ - .interrupt_parent = &__mee_dt_local_external_interrupts_0.irc, - .interrupt_line = 3UL, - .label = "SW3", -}; - -/* From pmp@0 */ -struct mee_pmp __mee_dt_pmp_0 = { - .num_regions = 8UL, -}; - -#define __MEE_DT_PMP_HANDLE (&__mee_dt_pmp_0) - -/* From teststatus@4000 */ -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000 = { - .vtable = &__mee_driver_vtable_sifive_test0, - .shutdown.vtable = &__mee_driver_vtable_sifive_test0.shutdown, - .base = 16384UL, - .size = 4096UL, -}; - -/* From teststatus@4000 */ -#define __MEE_DT_SHUTDOWN_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -#define __MEE_DT_TESTSTATUS_4000_HANDLE (&__mee_dt_teststatus_4000.shutdown) - -/* From serial@20000000 */ -#define __MEE_DT_STDOUT_UART_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_SERIAL_20000000_HANDLE (&__mee_dt_serial_20000000.uart) - -#define __MEE_DT_STDOUT_UART_BAUD 115200 - -#define __MEE_DT_MAX_HARTS 1 - -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; - -#define __MEE_DT_MAX_LEDS 3 - -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { - &__mee_dt_led_0red, - &__mee_dt_led_0green, - &__mee_dt_led_0blue}; - -#define __MEE_DT_MAX_BUTTONS 4 - -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { - &__mee_dt_button_0, - &__mee_dt_button_1, - &__mee_dt_button_2, - &__mee_dt_button_3}; - -#define __MEE_DT_MAX_SWITCHES 4 - -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { - &__mee_dt_switch_0, - &__mee_dt_switch_1, - &__mee_dt_switch_2, - &__mee_dt_switch_3}; - -#endif - -#endif /*MEE__MACHINE__COREIP_S51_ARTY__MEE_H*/ - -#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-s51-arty/metal.h b/bsp/coreip-s51-arty/metal.h new file mode 100644 index 0000000..6d90081 --- /dev/null +++ b/bsp/coreip-s51-arty/metal.h @@ -0,0 +1,479 @@ +#ifndef ASSEMBLY + +#ifndef COREIP_S51_ARTY__METAL_H +#define COREIP_S51_ARTY__METAL_H + +#ifdef __METAL_MACHINE_MACROS +/* To Satisfy libmetal build */ +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 +#endif +#endif + +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS + +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS + +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS + +#define __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 4 +#define METAL_MAX_GLOBAL_EXT_INTERRUPTS __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS + +#define __METAL_GPIO_20002000_INTERRUPTS 16 +#define METAL_MAX_GPIO_INTERRUPTS __METAL_GPIO_20002000_INTERRUPTS + +#define __METAL_SERIAL_20000000_INTERRUPTS 1 +#define METAL_MAX_UART_INTERRUPTS 1 + +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/drivers/fixed-clock.h> +#include <metal/drivers/sifive,gpio0.h> +#include <metal/drivers/sifive,uart0.h> +#include <metal/pmp.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +#include <metal/drivers/sifive,global-external-interrupts0.h> +#include <metal/drivers/sifive,gpio-leds.h> +#include <metal/drivers/sifive,gpio-buttons.h> +#include <metal/drivers/sifive,gpio-switches.h> +#include <metal/drivers/sifive,test0.h> +/* From cpu@0 */ +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; + +/* From clint@2000000 */ +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; + +/* From interrupt_controller@c000000 */ +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; + +/* From interrupt_controller */ +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; + +/* From clock@0 */ +asm (".weak __metal_dt_clock_0"); +struct __metal_driver_fixed_clock __metal_dt_clock_0; + +/* From local_external_interrupts_0 */ +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; + +/* From global_external_interrupts */ +asm (".weak __metal_dt_global_external_interrupts"); +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts; + +/* From gpio@20002000 */ +asm (".weak __metal_dt_gpio_20002000"); +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000; + +/* From serial@20000000 */ +asm (".weak __metal_dt_serial_20000000"); +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000; + +asm (".weak __metal_dt_pmp_0"); +struct metal_pmp __metal_dt_pmp_0; + +/* From led@0red */ +asm (".weak __metal_dt_led_0red"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red; + +/* From led@0green */ +asm (".weak __metal_dt_led_0green"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green; + +/* From led@0blue */ +asm (".weak __metal_dt_led_0blue"); +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue; + +/* From button@0 */ +asm (".weak __metal_dt_button_0"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_0; + +/* From button@1 */ +asm (".weak __metal_dt_button_1"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_1; + +/* From button@2 */ +asm (".weak __metal_dt_button_2"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_2; + +/* From button@3 */ +asm (".weak __metal_dt_button_3"); +struct __metal_driver_sifive_gpio_button __metal_dt_button_3; + +/* From switch@0 */ +asm (".weak __metal_dt_switch_0"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0; + +/* From switch@1 */ +asm (".weak __metal_dt_switch_1"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1; + +/* From switch@2 */ +asm (".weak __metal_dt_switch_2"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2; + +/* From switch@3 */ +asm (".weak __metal_dt_switch_3"); +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3; + +/* From teststatus@4000 */ +asm (".weak __metal_dt_teststatus_4000"); +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000; + +/* From cpu@0 */ +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, + .timebase = 1000000UL, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, +}; + +/* From cpu@0 */ +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) + +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) + +/* From clock@0 */ +struct __metal_driver_fixed_clock __metal_dt_clock_0 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 32500000UL, +}; + +/* From interrupt_controller */ +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, + .init_done = 0, + .interrupt_controller = 1, +}; + +/* From interrupt_controller */ +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) + +/* From clint@2000000 */ +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, + .control_base = 33554432UL, + .control_size = 65536UL, + .init_done = 0, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_lines[0] = 3, + .interrupt_lines[1] = 7, +}; + +/* From clint@2000000 */ +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) + +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) + +/* From local_external_interrupts_0 */ +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 16, + .interrupt_lines[1] = 17, + .interrupt_lines[2] = 18, + .interrupt_lines[3] = 19, + .interrupt_lines[4] = 20, + .interrupt_lines[5] = 21, + .interrupt_lines[6] = 22, + .interrupt_lines[7] = 23, + .interrupt_lines[8] = 24, + .interrupt_lines[9] = 25, + .interrupt_lines[10] = 26, + .interrupt_lines[11] = 27, + .interrupt_lines[12] = 28, + .interrupt_lines[13] = 29, + .interrupt_lines[14] = 30, + .interrupt_lines[15] = 31, +}; + +/* From local_external_interrupts_0 */ +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +/* From interrupt_controller@c000000 */ +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_line = 11UL, + .control_base = 201326592UL, + .control_size = 67108864UL, + .max_priority = 7UL, + .num_interrupts = 26UL, + .interrupt_controller = 1, +}; + +/* From interrupt_controller@c000000 */ +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +/* From global_external_interrupts */ +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts = { + .vtable = &__metal_driver_vtable_sifive_global_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_global_external_interrupts0.global0_vtable, + .init_done = 0, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GLOBAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 1, + .interrupt_lines[1] = 2, + .interrupt_lines[2] = 3, + .interrupt_lines[3] = 4, +}; + +/* From global_external_interrupts */ +#define __METAL_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__metal_dt_global_external_interrupts.irc) + +#define __METAL_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__metal_dt_global_external_interrupts.irc) + +/* From gpio@20002000 */ +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_20002000 = { + .vtable = &__metal_driver_vtable_sifive_gpio0, + .base = 536879104UL, + .size = 4096UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GPIO_INTERRUPTS, + .interrupt_lines[0] = 7, + .interrupt_lines[1] = 8, + .interrupt_lines[2] = 9, + .interrupt_lines[3] = 10, + .interrupt_lines[4] = 11, + .interrupt_lines[5] = 12, + .interrupt_lines[6] = 13, + .interrupt_lines[7] = 14, + .interrupt_lines[8] = 15, + .interrupt_lines[9] = 16, + .interrupt_lines[10] = 17, + .interrupt_lines[11] = 18, + .interrupt_lines[12] = 19, + .interrupt_lines[13] = 20, + .interrupt_lines[14] = 21, + .interrupt_lines[15] = 22, +}; + +/* From serial@20000000 */ +struct __metal_driver_sifive_uart0 __metal_dt_serial_20000000 = { + .vtable = &__metal_driver_vtable_sifive_uart0, + .uart.vtable = &__metal_driver_vtable_sifive_uart0.uart, + .control_base = 536870912UL, + .control_size = 4096UL, +/* From clock@0 */ + .clock = &__metal_dt_clock_0.clock, + .pinmux = NULL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_UART_INTERRUPTS, + .interrupt_line = 5UL, +}; + +/* From led@0red */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0red = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 0UL, + .label = "LD0red", +}; + +/* From led@0green */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0green = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 1UL, + .label = "LD0green", +}; + +/* From led@0blue */ +struct __metal_driver_sifive_gpio_led __metal_dt_led_0blue = { + .vtable = &__metal_driver_vtable_sifive_led, + .led.vtable = &__metal_driver_vtable_sifive_led.led_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 2UL, + .label = "LD0blue", +}; + +/* From button@0 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_0 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 4UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 4UL, + .label = "BTN0", +}; + +/* From button@1 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_1 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 5UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 5UL, + .label = "BTN1", +}; + +/* From button@2 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_2 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 6UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 6UL, + .label = "BTN2", +}; + +/* From button@3 */ +struct __metal_driver_sifive_gpio_button __metal_dt_button_3 = { + .vtable = &__metal_driver_vtable_sifive_button, + .button.vtable = &__metal_driver_vtable_sifive_button.button_vtable, +/* From gpio@20002000 */ + .gpio = &__metal_dt_gpio_20002000, + .pin = 7UL, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 7UL, + .label = "BTN3", +}; + +/* From switch@0 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_0 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 0UL, + .label = "SW0", +}; + +/* From switch@1 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_1 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 1UL, + .label = "SW1", +}; + +/* From switch@2 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_2 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From global_external_interrupts */ + .interrupt_parent = &__metal_dt_global_external_interrupts.irc, + .interrupt_line = 2UL, + .label = "SW2", +}; + +/* From switch@3 */ +struct __metal_driver_sifive_gpio_switch __metal_dt_switch_3 = { + .vtable = &__metal_driver_vtable_sifive_switch, + .flip.vtable = &__metal_driver_vtable_sifive_switch.switch_vtable, +/* From local_external_interrupts_0 */ + .interrupt_parent = &__metal_dt_local_external_interrupts_0.irc, + .interrupt_line = 3UL, + .label = "SW3", +}; + +/* From pmp@0 */ +struct metal_pmp __metal_dt_pmp_0 = { + .num_regions = 8UL, +}; + +#define __METAL_DT_PMP_HANDLE (&__metal_dt_pmp_0) + +/* From teststatus@4000 */ +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000 = { + .vtable = &__metal_driver_vtable_sifive_test0, + .shutdown.vtable = &__metal_driver_vtable_sifive_test0.shutdown, + .base = 16384UL, + .size = 4096UL, +}; + +/* From teststatus@4000 */ +#define __METAL_DT_SHUTDOWN_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +#define __METAL_DT_TESTSTATUS_4000_HANDLE (&__metal_dt_teststatus_4000.shutdown) + +/* From serial@20000000 */ +#define __METAL_DT_STDOUT_UART_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_SERIAL_20000000_HANDLE (&__metal_dt_serial_20000000.uart) + +#define __METAL_DT_STDOUT_UART_BAUD 115200 + +#define __METAL_DT_MAX_HARTS 1 + +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; + +#define __METAL_DT_MAX_LEDS 3 + +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { + &__metal_dt_led_0red, + &__metal_dt_led_0green, + &__metal_dt_led_0blue}; + +#define __METAL_DT_MAX_BUTTONS 4 + +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { + &__metal_dt_button_0, + &__metal_dt_button_1, + &__metal_dt_button_2, + &__metal_dt_button_3}; + +#define __METAL_DT_MAX_SWITCHES 4 + +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { + &__metal_dt_switch_0, + &__metal_dt_switch_1, + &__metal_dt_switch_2, + &__metal_dt_switch_3}; + +#endif + +#endif /*METAL__MACHINE__COREIP_S51_ARTY__METAL_H*/ + +#endif/*ASSEMBLY*/ diff --git a/bsp/coreip-e31-arty/mee.lds b/bsp/coreip-s51-arty/metal.lds index 7b28478..28a7849 100644 --- a/bsp/coreip-e31-arty/mee.lds +++ b/bsp/coreip-s51-arty/metal.lds @@ -26,7 +26,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >flash AT>flash :flash @@ -124,14 +124,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >flash AT>flash :flash .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >itim AT>flash :itim_init @@ -142,21 +142,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >flash AT>flash :flash .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>flash :ram_init @@ -180,10 +180,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -200,24 +200,24 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; . = __heap_size == 0 ? 0 : ORIGIN(ram) + LENGTH(ram); - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/coreip-s51/mee.h b/bsp/coreip-s51/metal.h index 503664c..07c59cf 100644 --- a/bsp/coreip-s51/mee.h +++ b/bsp/coreip-s51/metal.h @@ -1,118 +1,118 @@ #ifndef ASSEMBLY -#ifndef COREIP_S51__MEE_H -#define COREIP_S51__MEE_H +#ifndef COREIP_S51__METAL_H +#define COREIP_S51__METAL_H -#ifdef __MEE_MACHINE_MACROS +#ifdef __METAL_MACHINE_MACROS /* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 #endif #endif -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS -#define __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 255 -#define MEE_MAX_GLOBAL_EXT_INTERRUPTS __MEE_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS +#define __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS 255 +#define METAL_MAX_GLOBAL_EXT_INTERRUPTS __METAL_GLOBAL_EXTERNAL_INTERRUPTS_INTERRUPTS -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/pmp.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -#include <mee/drivers/sifive,global-external-interrupts0.h> -#include <mee/drivers/sifive,test0.h> +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/pmp.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +#include <metal/drivers/sifive,global-external-interrupts0.h> +#include <metal/drivers/sifive,test0.h> /* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; /* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; /* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; /* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; /* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; /* From global_external_interrupts */ -asm (".weak __mee_dt_global_external_interrupts"); -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts; +asm (".weak __metal_dt_global_external_interrupts"); +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts; -asm (".weak __mee_dt_pmp_0"); -struct mee_pmp __mee_dt_pmp_0; +asm (".weak __metal_dt_pmp_0"); +struct metal_pmp __metal_dt_pmp_0; /* From teststatus@4000 */ -asm (".weak __mee_dt_teststatus_4000"); -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000; +asm (".weak __metal_dt_teststatus_4000"); +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000; /* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, }; /* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) /* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, .init_done = 0, .interrupt_controller = 1, }; /* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) /* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, .control_base = 33554432UL, .control_size = 65536UL, .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, .interrupt_lines[0] = 3, .interrupt_lines[1] = 7, }; /* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) /* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, .init_done = 0, /* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, .interrupt_lines[0] = 16, .interrupt_lines[1] = 17, .interrupt_lines[2] = 18, @@ -132,17 +132,17 @@ struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_in }; /* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) /* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, .init_done = 0, /* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, .interrupt_line = 11UL, .control_base = 201326592UL, .control_size = 67108864UL, @@ -152,18 +152,18 @@ struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { }; /* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) /* From global_external_interrupts */ -struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_interrupts = { - .vtable = &__mee_driver_vtable_sifive_global_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_global_external_interrupts0.global0_vtable, +struct __metal_driver_sifive_global_external_interrupts0 __metal_dt_global_external_interrupts = { + .vtable = &__metal_driver_vtable_sifive_global_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_global_external_interrupts0.global0_vtable, .init_done = 0, /* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GLOBAL_EXT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GLOBAL_EXT_INTERRUPTS, .interrupt_lines[0] = 1, .interrupt_lines[1] = 2, .interrupt_lines[2] = 3, @@ -422,53 +422,53 @@ struct __mee_driver_sifive_global_external_interrupts0 __mee_dt_global_external_ }; /* From global_external_interrupts */ -#define __MEE_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__mee_dt_global_external_interrupts.irc) +#define __METAL_DT_SIFIVE_GLOBAL_EXINTR0_HANDLE (&__metal_dt_global_external_interrupts.irc) -#define __MEE_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__mee_dt_global_external_interrupts.irc) +#define __METAL_DT_GLOBAL_EXTERNAL_INTERRUPTS_HANDLE (&__metal_dt_global_external_interrupts.irc) /* From pmp@0 */ -struct mee_pmp __mee_dt_pmp_0 = { +struct metal_pmp __metal_dt_pmp_0 = { .num_regions = 8UL, }; -#define __MEE_DT_PMP_HANDLE (&__mee_dt_pmp_0) +#define __METAL_DT_PMP_HANDLE (&__metal_dt_pmp_0) /* From teststatus@4000 */ -struct __mee_driver_sifive_test0 __mee_dt_teststatus_4000 = { - .vtable = &__mee_driver_vtable_sifive_test0, - .shutdown.vtable = &__mee_driver_vtable_sifive_test0.shutdown, +struct __metal_driver_sifive_test0 __metal_dt_teststatus_4000 = { + .vtable = &__metal_driver_vtable_sifive_test0, + .shutdown.vtable = &__metal_driver_vtable_sifive_test0.shutdown, .base = 16384UL, .size = 4096UL, }; /* From teststatus@4000 */ -#define __MEE_DT_SHUTDOWN_HANDLE (&__mee_dt_teststatus_4000.shutdown) +#define __METAL_DT_SHUTDOWN_HANDLE (&__metal_dt_teststatus_4000.shutdown) -#define __MEE_DT_TESTSTATUS_4000_HANDLE (&__mee_dt_teststatus_4000.shutdown) +#define __METAL_DT_TESTSTATUS_4000_HANDLE (&__metal_dt_teststatus_4000.shutdown) -#define __MEE_DT_MAX_HARTS 1 +#define __METAL_DT_MAX_HARTS 1 -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; -#define __MEE_DT_MAX_LEDS 0 +#define __METAL_DT_MAX_LEDS 0 -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { NULL }; -#define __MEE_DT_MAX_BUTTONS 0 +#define __METAL_DT_MAX_BUTTONS 0 -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { NULL }; -#define __MEE_DT_MAX_SWITCHES 0 +#define __METAL_DT_MAX_SWITCHES 0 -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { NULL }; #endif -#endif /*MEE__MACHINE__COREIP_S51__MEE_H*/ +#endif /*METAL__MACHINE__COREIP_S51__METAL_H*/ #endif/*ASSEMBLY*/ diff --git a/bsp/coreip-s51/mee.lds b/bsp/coreip-s51/metal.lds index 2c2ba1c..d5d77a3 100644 --- a/bsp/coreip-s51/mee.lds +++ b/bsp/coreip-s51/metal.lds @@ -25,7 +25,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >ram AT>ram :ram @@ -123,14 +123,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >ram AT>ram :ram .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >itim AT>ram :itim_init @@ -141,21 +141,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >ram AT>ram :ram .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>ram :ram_init @@ -179,10 +179,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -199,23 +199,23 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/freedom-e310-arty/design.dts b/bsp/freedom-e310-arty/design.dts index 73f8fbb..74da572 100644 --- a/bsp/freedom-e310-arty/design.dts +++ b/bsp/freedom-e310-arty/design.dts @@ -8,7 +8,7 @@ chosen { stdout-path = "/soc/serial@10013000:115200"; - mee,entry = <&sip0 0x400000>; + metal,entry = <&sip0 0x400000>; }; cpus { diff --git a/bsp/freedom-e310-arty/mee.h b/bsp/freedom-e310-arty/mee.h deleted file mode 100644 index 39278ea..0000000 --- a/bsp/freedom-e310-arty/mee.h +++ /dev/null @@ -1,246 +0,0 @@ -#ifndef ASSEMBLY - -#ifndef FREEDOM_E310_ARTY__MEE_H -#define FREEDOM_E310_ARTY__MEE_H - -#ifdef __MEE_MACHINE_MACROS -/* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 -#endif -#endif - -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS - -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS - -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS - -#define __MEE_GPIO_10012000_INTERRUPTS 16 -#define MEE_MAX_GPIO_INTERRUPTS __MEE_GPIO_10012000_INTERRUPTS - -#define __MEE_SERIAL_10013000_INTERRUPTS 1 -#define MEE_MAX_UART_INTERRUPTS 1 - -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/drivers/fixed-clock.h> -#include <mee/drivers/sifive,gpio0.h> -#include <mee/drivers/sifive,uart0.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -/* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; - -/* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; - -/* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; - -/* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; - -/* From clock@0 */ -asm (".weak __mee_dt_clock_0"); -struct __mee_driver_fixed_clock __mee_dt_clock_0; - -/* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; - -/* From gpio@10012000 */ -asm (".weak __mee_dt_gpio_10012000"); -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_10012000; - -/* From serial@10013000 */ -asm (".weak __mee_dt_serial_10013000"); -struct __mee_driver_sifive_uart0 __mee_dt_serial_10013000; - -/* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, - .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, -}; - -/* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) - -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) - -/* From clock@0 */ -struct __mee_driver_fixed_clock __mee_dt_clock_0 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 65000000UL, -}; - -/* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, - .init_done = 0, - .interrupt_controller = 1, -}; - -/* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) - -/* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, - .control_base = 33554432UL, - .control_size = 65536UL, - .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_lines[0] = 3, - .interrupt_lines[1] = 7, -}; - -/* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) - -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) - -/* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 16, - .interrupt_lines[1] = 17, - .interrupt_lines[2] = 18, - .interrupt_lines[3] = 19, - .interrupt_lines[4] = 20, - .interrupt_lines[5] = 21, - .interrupt_lines[6] = 22, - .interrupt_lines[7] = 23, - .interrupt_lines[8] = 24, - .interrupt_lines[9] = 25, - .interrupt_lines[10] = 26, - .interrupt_lines[11] = 27, - .interrupt_lines[12] = 28, - .interrupt_lines[13] = 29, - .interrupt_lines[14] = 30, - .interrupt_lines[15] = 31, -}; - -/* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -/* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_line = 11UL, - .control_base = 201326592UL, - .control_size = 67108864UL, - .max_priority = 7UL, - .num_interrupts = 26UL, - .interrupt_controller = 1, -}; - -/* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -/* From gpio@10012000 */ -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_10012000 = { - .vtable = &__mee_driver_vtable_sifive_gpio0, - .base = 268509184UL, - .size = 4096UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GPIO_INTERRUPTS, - .interrupt_lines[0] = 7, - .interrupt_lines[1] = 8, - .interrupt_lines[2] = 9, - .interrupt_lines[3] = 10, - .interrupt_lines[4] = 11, - .interrupt_lines[5] = 12, - .interrupt_lines[6] = 13, - .interrupt_lines[7] = 14, - .interrupt_lines[8] = 15, - .interrupt_lines[9] = 16, - .interrupt_lines[10] = 17, - .interrupt_lines[11] = 18, - .interrupt_lines[12] = 19, - .interrupt_lines[13] = 20, - .interrupt_lines[14] = 21, - .interrupt_lines[15] = 22, -}; - -/* From serial@10013000 */ -struct __mee_driver_sifive_uart0 __mee_dt_serial_10013000 = { - .vtable = &__mee_driver_vtable_sifive_uart0, - .uart.vtable = &__mee_driver_vtable_sifive_uart0.uart, - .control_base = 268513280UL, - .control_size = 4096UL, -/* From clock@0 */ - .clock = &__mee_dt_clock_0.clock, -/* From gpio@10012000 */ - .pinmux = &__mee_dt_gpio_10012000, - .pinmux_output_selector = 196608UL, - .pinmux_source_selector = 196608UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_UART_INTERRUPTS, - .interrupt_line = 5UL, -}; - -/* From serial@10013000 */ -#define __MEE_DT_STDOUT_UART_HANDLE (&__mee_dt_serial_10013000.uart) - -#define __MEE_DT_SERIAL_10013000_HANDLE (&__mee_dt_serial_10013000.uart) - -#define __MEE_DT_STDOUT_UART_BAUD 115200 - -#define __MEE_DT_MAX_HARTS 1 - -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; - -#define __MEE_DT_MAX_LEDS 0 - -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { - NULL }; -#define __MEE_DT_MAX_BUTTONS 0 - -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { - NULL }; -#define __MEE_DT_MAX_SWITCHES 0 - -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { - NULL }; -#endif - -#endif /*MEE__MACHINE__FREEDOM_E310_ARTY__MEE_H*/ - -#endif/*ASSEMBLY*/ diff --git a/bsp/freedom-e310-arty/metal.h b/bsp/freedom-e310-arty/metal.h new file mode 100644 index 0000000..e1e2dd0 --- /dev/null +++ b/bsp/freedom-e310-arty/metal.h @@ -0,0 +1,246 @@ +#ifndef ASSEMBLY + +#ifndef FREEDOM_E310_ARTY__METAL_H +#define FREEDOM_E310_ARTY__METAL_H + +#ifdef __METAL_MACHINE_MACROS +/* To Satisfy libmetal build */ +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 +#endif +#endif + +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS + +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS + +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS + +#define __METAL_GPIO_10012000_INTERRUPTS 16 +#define METAL_MAX_GPIO_INTERRUPTS __METAL_GPIO_10012000_INTERRUPTS + +#define __METAL_SERIAL_10013000_INTERRUPTS 1 +#define METAL_MAX_UART_INTERRUPTS 1 + +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/drivers/fixed-clock.h> +#include <metal/drivers/sifive,gpio0.h> +#include <metal/drivers/sifive,uart0.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +/* From cpu@0 */ +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; + +/* From clint@2000000 */ +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; + +/* From interrupt_controller@c000000 */ +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; + +/* From interrupt_controller */ +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; + +/* From clock@0 */ +asm (".weak __metal_dt_clock_0"); +struct __metal_driver_fixed_clock __metal_dt_clock_0; + +/* From local_external_interrupts_0 */ +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; + +/* From gpio@10012000 */ +asm (".weak __metal_dt_gpio_10012000"); +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_10012000; + +/* From serial@10013000 */ +asm (".weak __metal_dt_serial_10013000"); +struct __metal_driver_sifive_uart0 __metal_dt_serial_10013000; + +/* From cpu@0 */ +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, + .timebase = 1000000UL, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, +}; + +/* From cpu@0 */ +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) + +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) + +/* From clock@0 */ +struct __metal_driver_fixed_clock __metal_dt_clock_0 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 65000000UL, +}; + +/* From interrupt_controller */ +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, + .init_done = 0, + .interrupt_controller = 1, +}; + +/* From interrupt_controller */ +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) + +/* From clint@2000000 */ +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, + .control_base = 33554432UL, + .control_size = 65536UL, + .init_done = 0, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_lines[0] = 3, + .interrupt_lines[1] = 7, +}; + +/* From clint@2000000 */ +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) + +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) + +/* From local_external_interrupts_0 */ +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 16, + .interrupt_lines[1] = 17, + .interrupt_lines[2] = 18, + .interrupt_lines[3] = 19, + .interrupt_lines[4] = 20, + .interrupt_lines[5] = 21, + .interrupt_lines[6] = 22, + .interrupt_lines[7] = 23, + .interrupt_lines[8] = 24, + .interrupt_lines[9] = 25, + .interrupt_lines[10] = 26, + .interrupt_lines[11] = 27, + .interrupt_lines[12] = 28, + .interrupt_lines[13] = 29, + .interrupt_lines[14] = 30, + .interrupt_lines[15] = 31, +}; + +/* From local_external_interrupts_0 */ +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +/* From interrupt_controller@c000000 */ +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_line = 11UL, + .control_base = 201326592UL, + .control_size = 67108864UL, + .max_priority = 7UL, + .num_interrupts = 26UL, + .interrupt_controller = 1, +}; + +/* From interrupt_controller@c000000 */ +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +/* From gpio@10012000 */ +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_10012000 = { + .vtable = &__metal_driver_vtable_sifive_gpio0, + .base = 268509184UL, + .size = 4096UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GPIO_INTERRUPTS, + .interrupt_lines[0] = 7, + .interrupt_lines[1] = 8, + .interrupt_lines[2] = 9, + .interrupt_lines[3] = 10, + .interrupt_lines[4] = 11, + .interrupt_lines[5] = 12, + .interrupt_lines[6] = 13, + .interrupt_lines[7] = 14, + .interrupt_lines[8] = 15, + .interrupt_lines[9] = 16, + .interrupt_lines[10] = 17, + .interrupt_lines[11] = 18, + .interrupt_lines[12] = 19, + .interrupt_lines[13] = 20, + .interrupt_lines[14] = 21, + .interrupt_lines[15] = 22, +}; + +/* From serial@10013000 */ +struct __metal_driver_sifive_uart0 __metal_dt_serial_10013000 = { + .vtable = &__metal_driver_vtable_sifive_uart0, + .uart.vtable = &__metal_driver_vtable_sifive_uart0.uart, + .control_base = 268513280UL, + .control_size = 4096UL, +/* From clock@0 */ + .clock = &__metal_dt_clock_0.clock, +/* From gpio@10012000 */ + .pinmux = &__metal_dt_gpio_10012000, + .pinmux_output_selector = 196608UL, + .pinmux_source_selector = 196608UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_UART_INTERRUPTS, + .interrupt_line = 5UL, +}; + +/* From serial@10013000 */ +#define __METAL_DT_STDOUT_UART_HANDLE (&__metal_dt_serial_10013000.uart) + +#define __METAL_DT_SERIAL_10013000_HANDLE (&__metal_dt_serial_10013000.uart) + +#define __METAL_DT_STDOUT_UART_BAUD 115200 + +#define __METAL_DT_MAX_HARTS 1 + +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; + +#define __METAL_DT_MAX_LEDS 0 + +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { + NULL }; +#define __METAL_DT_MAX_BUTTONS 0 + +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { + NULL }; +#define __METAL_DT_MAX_SWITCHES 0 + +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { + NULL }; +#endif + +#endif /*METAL__MACHINE__FREEDOM_E310_ARTY__METAL_H*/ + +#endif/*ASSEMBLY*/ diff --git a/bsp/freedom-e310-arty/mee.lds b/bsp/freedom-e310-arty/metal.lds index d5f73d5..c0556ee 100644 --- a/bsp/freedom-e310-arty/mee.lds +++ b/bsp/freedom-e310-arty/metal.lds @@ -26,7 +26,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >flash AT>flash :flash @@ -124,14 +124,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >flash AT>flash :flash .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >itim AT>flash :itim_init @@ -142,21 +142,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >flash AT>flash :flash .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>flash :ram_init @@ -180,10 +180,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -200,24 +200,24 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; . = __heap_size == 0 ? 0 : ORIGIN(ram) + LENGTH(ram); - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/sifive-hifive1/design.dts b/bsp/sifive-hifive1/design.dts index 26e4048..abccd6c 100644 --- a/bsp/sifive-hifive1/design.dts +++ b/bsp/sifive-hifive1/design.dts @@ -8,7 +8,7 @@ chosen { stdout-path = "/soc/serial@10013000:115200"; - mee,entry = <&sip0 0x400000>; + metal,entry = <&sip0 0x400000>; }; cpus { diff --git a/bsp/sifive-hifive1/mee.h b/bsp/sifive-hifive1/mee.h deleted file mode 100644 index b67efcc..0000000 --- a/bsp/sifive-hifive1/mee.h +++ /dev/null @@ -1,339 +0,0 @@ -#ifndef ASSEMBLY - -#ifndef SIFIVE_HIFIVE1__MEE_H -#define SIFIVE_HIFIVE1__MEE_H - -#ifdef __MEE_MACHINE_MACROS -/* To Satisfy libmetal build */ -#ifndef __MEE_CLIC_SUBINTERRUPTS -#define __MEE_CLIC_SUBINTERRUPTS 0 -#endif -#endif - -#ifndef __MEE_MACHINE_MACROS -#define __MEE_CLINT_2000000_INTERRUPTS 2 -#define MEE_MAX_CLINT_INTERRUPTS __MEE_CLINT_2000000_INTERRUPTS - -#define __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 -#define MEE_MAX_PLIC_INTERRUPTS __MEE_INTERRUPT_CONTROLLER_C000000_INTERRUPTS - -#define __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 -#define MEE_MAX_LOCAL_EXT_INTERRUPTS __MEE_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS - -#define __MEE_GPIO_10012000_INTERRUPTS 16 -#define MEE_MAX_GPIO_INTERRUPTS __MEE_GPIO_10012000_INTERRUPTS - -#define __MEE_SERIAL_10013000_INTERRUPTS 1 -#define MEE_MAX_UART_INTERRUPTS 1 - -#include <mee/drivers/riscv,cpu.h> -#include <mee/drivers/riscv,clint0.h> -#include <mee/drivers/riscv,plic0.h> -#include <mee/drivers/fixed-clock.h> -#include <mee/drivers/sifive,fe310-g000,pll.h> -#include <mee/drivers/sifive,fe310-g000,prci.h> -#include <mee/drivers/sifive,fe310-g000,hfxosc.h> -#include <mee/drivers/sifive,fe310-g000,hfrosc.h> -#include <mee/drivers/sifive,gpio0.h> -#include <mee/drivers/sifive,uart0.h> -#include <mee/drivers/sifive,local-external-interrupts0.h> -/* From cpu@0 */ -asm (".weak __mee_dt_cpu_0"); -struct __mee_driver_cpu __mee_dt_cpu_0; - -/* From clint@2000000 */ -asm (".weak __mee_dt_clint_2000000"); -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000; - -/* From interrupt_controller@c000000 */ -asm (".weak __mee_dt_interrupt_controller_c000000"); -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000; - -/* From interrupt_controller */ -asm (".weak __mee_dt_interrupt_controller"); -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller; - -/* From clock@0 */ -asm (".weak __mee_dt_clock_0"); -struct __mee_driver_fixed_clock __mee_dt_clock_0; - -/* From clock@2 */ -asm (".weak __mee_dt_clock_2"); -struct __mee_driver_fixed_clock __mee_dt_clock_2; - -/* From clock@5 */ -asm (".weak __mee_dt_clock_5"); -struct __mee_driver_fixed_clock __mee_dt_clock_5; - -/* From local_external_interrupts_0 */ -asm (".weak __mee_dt_local_external_interrupts_0"); -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0; - -/* From clock@4 */ -asm (".weak __mee_dt_clock_4"); -struct __mee_driver_sifive_fe310_g000_pll __mee_dt_clock_4; - -/* From prci@10008000 */ -asm (".weak __mee_dt_prci_10008000"); -struct __mee_driver_sifive_fe310_g000_prci __mee_dt_prci_10008000; - -/* From clock@1 */ -asm (".weak __mee_dt_clock_1"); -struct __mee_driver_sifive_fe310_g000_hfxosc __mee_dt_clock_1; - -/* From clock@3 */ -asm (".weak __mee_dt_clock_3"); -struct __mee_driver_sifive_fe310_g000_hfrosc __mee_dt_clock_3; - -/* From gpio@10012000 */ -asm (".weak __mee_dt_gpio_10012000"); -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_10012000; - -/* From serial@10013000 */ -asm (".weak __mee_dt_serial_10013000"); -struct __mee_driver_sifive_uart0 __mee_dt_serial_10013000; - -/* From cpu@0 */ -struct __mee_driver_cpu __mee_dt_cpu_0 = { - .vtable = &__mee_driver_vtable_cpu, - .cpu.vtable = &__mee_driver_vtable_cpu.cpu_vtable, - .timebase = 1000000UL, - .interrupt_controller = &__mee_dt_interrupt_controller.controller, -}; - -/* From cpu@0 */ -#define __MEE_DT_RISCV_CPU_HANDLE (&__mee_dt_cpu_0.cpu) - -#define __MEE_DT_CPU_0_HANDLE (&__mee_dt_cpu_0.cpu) - -/* From clock@0 */ -struct __mee_driver_fixed_clock __mee_dt_clock_0 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 16000000UL, -}; - -/* From clock@2 */ -struct __mee_driver_fixed_clock __mee_dt_clock_2 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 72000000UL, -}; - -/* From clock@5 */ -struct __mee_driver_fixed_clock __mee_dt_clock_5 = { - .vtable = &__mee_driver_vtable_fixed_clock, - .clock.vtable = &__mee_driver_vtable_fixed_clock.clock, - .rate = 32000000UL, -}; - -/* From interrupt_controller */ -struct __mee_driver_riscv_cpu_intc __mee_dt_interrupt_controller = { - .vtable = &__mee_driver_vtable_riscv_cpu_intc, - .controller.vtable = &__mee_driver_vtable_riscv_cpu_intc.controller_vtable, - .init_done = 0, - .interrupt_controller = 1, -}; - -/* From interrupt_controller */ -#define __MEE_DT_RISCV_CPU_INTC_HANDLE (&__mee_dt_interrupt_controller.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_HANDLE (&__mee_dt_interrupt_controller.controller) - -/* From clint@2000000 */ -struct __mee_driver_riscv_clint0 __mee_dt_clint_2000000 = { - .vtable = &__mee_driver_vtable_riscv_clint0, - .controller.vtable = &__mee_driver_vtable_riscv_clint0.clint_vtable, - .control_base = 33554432UL, - .control_size = 65536UL, - .init_done = 0, - .num_interrupts = MEE_MAX_CLINT_INTERRUPTS, - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_lines[0] = 3, - .interrupt_lines[1] = 7, -}; - -/* From clint@2000000 */ -#define __MEE_DT_RISCV_CLINT0_HANDLE (&__mee_dt_clint_2000000.controller) - -#define __MEE_DT_CLINT_2000000_HANDLE (&__mee_dt_clint_2000000.controller) - -/* From local_external_interrupts_0 */ -struct __mee_driver_sifive_local_external_interrupts0 __mee_dt_local_external_interrupts_0 = { - .vtable = &__mee_driver_vtable_sifive_local_external_interrupts0, - .irc.vtable = &__mee_driver_vtable_sifive_local_external_interrupts0.local0_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .num_interrupts = MEE_MAX_LOCAL_EXT_INTERRUPTS, - .interrupt_lines[0] = 16, - .interrupt_lines[1] = 17, - .interrupt_lines[2] = 18, - .interrupt_lines[3] = 19, - .interrupt_lines[4] = 20, - .interrupt_lines[5] = 21, - .interrupt_lines[6] = 22, - .interrupt_lines[7] = 23, - .interrupt_lines[8] = 24, - .interrupt_lines[9] = 25, - .interrupt_lines[10] = 26, - .interrupt_lines[11] = 27, - .interrupt_lines[12] = 28, - .interrupt_lines[13] = 29, - .interrupt_lines[14] = 30, - .interrupt_lines[15] = 31, -}; - -/* From local_external_interrupts_0 */ -#define __MEE_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -#define __MEE_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__mee_dt_local_external_interrupts_0.irc) - -/* From interrupt_controller@c000000 */ -struct __mee_driver_riscv_plic0 __mee_dt_interrupt_controller_c000000 = { - .vtable = &__mee_driver_vtable_riscv_plic0, - .controller.vtable = &__mee_driver_vtable_riscv_plic0.plic_vtable, - .init_done = 0, -/* From interrupt_controller */ - .interrupt_parent = &__mee_dt_interrupt_controller.controller, - .interrupt_line = 11UL, - .control_base = 201326592UL, - .control_size = 67108864UL, - .max_priority = 7UL, - .num_interrupts = 26UL, - .interrupt_controller = 1, -}; - -/* From interrupt_controller@c000000 */ -#define __MEE_DT_RISCV_PLIC0_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -#define __MEE_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__mee_dt_interrupt_controller_c000000.controller) - -/* From clock@4 */ -struct __mee_driver_sifive_fe310_g000_pll __mee_dt_clock_4 = { - .vtable = &__mee_driver_vtable_sifive_fe310_g000_pll, - .clock.vtable = &__mee_driver_vtable_sifive_fe310_g000_pll.clock, -/* From clock@3 */ - .pllsel0 = &__mee_dt_clock_3.clock, -/* From clock@1 */ - .pllref = &__mee_dt_clock_1.clock, -/* From prci@10008000 */ - .divider_base = &__mee_dt_prci_10008000, - .divider_offset = 12UL, -/* From prci@10008000 */ - .config_base = &__mee_dt_prci_10008000, - .config_offset = 8UL, - .init_rate = 16000000UL, -}; - -/* From clock@4 */ -#define __MEE_DT_SIFIVE_FE310_G000_PLL_HANDLE (&__mee_dt_clock_4) - -#define __MEE_DT_CLOCK_4_HANDLE (&__mee_dt_clock_4) - -/* From prci@10008000 */ -struct __mee_driver_sifive_fe310_g000_prci __mee_dt_prci_10008000 = { - .vtable = &__mee_driver_vtable_sifive_fe310_g000_prci, - .base = 268468224UL, - .size = 32768UL, -}; - -/* From clock@1 */ -struct __mee_driver_sifive_fe310_g000_hfxosc __mee_dt_clock_1 = { - .vtable = &__mee_driver_vtable_sifive_fe310_g000_hfxosc, - .clock.vtable = &__mee_driver_vtable_sifive_fe310_g000_hfxosc.clock, -/* From clock@0 */ - .ref = &__mee_dt_clock_0.clock, -/* From prci@10008000 */ - .config_base = &__mee_dt_prci_10008000, - .config_offset = 4UL, -}; - -/* From clock@3 */ -struct __mee_driver_sifive_fe310_g000_hfrosc __mee_dt_clock_3 = { - .vtable = &__mee_driver_vtable_sifive_fe310_g000_hfrosc, - .clock.vtable = &__mee_driver_vtable_sifive_fe310_g000_hfrosc.clock, -/* From clock@2 */ - .ref = &__mee_dt_clock_2.clock, -/* From prci@10008000 */ - .config_base = &__mee_dt_prci_10008000, - .config_offset = 0UL, -}; - -/* From gpio@10012000 */ -struct __mee_driver_sifive_gpio0 __mee_dt_gpio_10012000 = { - .vtable = &__mee_driver_vtable_sifive_gpio0, - .base = 268509184UL, - .size = 4096UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_GPIO_INTERRUPTS, - .interrupt_lines[0] = 7, - .interrupt_lines[1] = 8, - .interrupt_lines[2] = 9, - .interrupt_lines[3] = 10, - .interrupt_lines[4] = 11, - .interrupt_lines[5] = 12, - .interrupt_lines[6] = 13, - .interrupt_lines[7] = 14, - .interrupt_lines[8] = 15, - .interrupt_lines[9] = 16, - .interrupt_lines[10] = 17, - .interrupt_lines[11] = 18, - .interrupt_lines[12] = 19, - .interrupt_lines[13] = 20, - .interrupt_lines[14] = 21, - .interrupt_lines[15] = 22, -}; - -/* From serial@10013000 */ -struct __mee_driver_sifive_uart0 __mee_dt_serial_10013000 = { - .vtable = &__mee_driver_vtable_sifive_uart0, - .uart.vtable = &__mee_driver_vtable_sifive_uart0.uart, - .control_base = 268513280UL, - .control_size = 4096UL, -/* From clock@4 */ - .clock = &__mee_dt_clock_4.clock, -/* From gpio@10012000 */ - .pinmux = &__mee_dt_gpio_10012000, - .pinmux_output_selector = 196608UL, - .pinmux_source_selector = 196608UL, -/* From interrupt_controller@c000000 */ - .interrupt_parent = &__mee_dt_interrupt_controller_c000000.controller, - .num_interrupts = MEE_MAX_UART_INTERRUPTS, - .interrupt_line = 5UL, -}; - -/* From serial@10013000 */ -#define __MEE_DT_STDOUT_UART_HANDLE (&__mee_dt_serial_10013000.uart) - -#define __MEE_DT_SERIAL_10013000_HANDLE (&__mee_dt_serial_10013000.uart) - -#define __MEE_DT_STDOUT_UART_BAUD 115200 - -#define __MEE_DT_MAX_HARTS 1 - -asm (".weak __mee_cpu_table"); -struct __mee_driver_cpu *__mee_cpu_table[] = { - &__mee_dt_cpu_0}; - -#define __MEE_DT_MAX_LEDS 0 - -asm (".weak __mee_led_table"); -struct __mee_driver_sifive_gpio_led *__mee_led_table[] = { - NULL }; -#define __MEE_DT_MAX_BUTTONS 0 - -asm (".weak __mee_button_table"); -struct __mee_driver_sifive_gpio_button *__mee_button_table[] = { - NULL }; -#define __MEE_DT_MAX_SWITCHES 0 - -asm (".weak __mee_switch_table"); -struct __mee_driver_sifive_gpio_switch *__mee_switch_table[] = { - NULL }; -#endif - -#endif /*MEE__MACHINE__SIFIVE_HIFIVE1__MEE_H*/ - -#endif/*ASSEMBLY*/ diff --git a/bsp/sifive-hifive1/metal.h b/bsp/sifive-hifive1/metal.h new file mode 100644 index 0000000..0459928 --- /dev/null +++ b/bsp/sifive-hifive1/metal.h @@ -0,0 +1,339 @@ +#ifndef ASSEMBLY + +#ifndef SIFIVE_HIFIVE1__METAL_H +#define SIFIVE_HIFIVE1__METAL_H + +#ifdef __METAL_MACHINE_MACROS +/* To Satisfy libmetal build */ +#ifndef __METAL_CLIC_SUBINTERRUPTS +#define __METAL_CLIC_SUBINTERRUPTS 0 +#endif +#endif + +#ifndef __METAL_MACHINE_MACROS +#define __METAL_CLINT_2000000_INTERRUPTS 2 +#define METAL_MAX_CLINT_INTERRUPTS __METAL_CLINT_2000000_INTERRUPTS + +#define __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS 1 +#define METAL_MAX_PLIC_INTERRUPTS __METAL_INTERRUPT_CONTROLLER_C000000_INTERRUPTS + +#define __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS 16 +#define METAL_MAX_LOCAL_EXT_INTERRUPTS __METAL_LOCAL_EXTERNAL_INTERRUPTS_0_INTERRUPTS + +#define __METAL_GPIO_10012000_INTERRUPTS 16 +#define METAL_MAX_GPIO_INTERRUPTS __METAL_GPIO_10012000_INTERRUPTS + +#define __METAL_SERIAL_10013000_INTERRUPTS 1 +#define METAL_MAX_UART_INTERRUPTS 1 + +#include <metal/drivers/riscv,cpu.h> +#include <metal/drivers/riscv,clint0.h> +#include <metal/drivers/riscv,plic0.h> +#include <metal/drivers/fixed-clock.h> +#include <metal/drivers/sifive,fe310-g000,pll.h> +#include <metal/drivers/sifive,fe310-g000,prci.h> +#include <metal/drivers/sifive,fe310-g000,hfxosc.h> +#include <metal/drivers/sifive,fe310-g000,hfrosc.h> +#include <metal/drivers/sifive,gpio0.h> +#include <metal/drivers/sifive,uart0.h> +#include <metal/drivers/sifive,local-external-interrupts0.h> +/* From cpu@0 */ +asm (".weak __metal_dt_cpu_0"); +struct __metal_driver_cpu __metal_dt_cpu_0; + +/* From clint@2000000 */ +asm (".weak __metal_dt_clint_2000000"); +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000; + +/* From interrupt_controller@c000000 */ +asm (".weak __metal_dt_interrupt_controller_c000000"); +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000; + +/* From interrupt_controller */ +asm (".weak __metal_dt_interrupt_controller"); +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller; + +/* From clock@0 */ +asm (".weak __metal_dt_clock_0"); +struct __metal_driver_fixed_clock __metal_dt_clock_0; + +/* From clock@2 */ +asm (".weak __metal_dt_clock_2"); +struct __metal_driver_fixed_clock __metal_dt_clock_2; + +/* From clock@5 */ +asm (".weak __metal_dt_clock_5"); +struct __metal_driver_fixed_clock __metal_dt_clock_5; + +/* From local_external_interrupts_0 */ +asm (".weak __metal_dt_local_external_interrupts_0"); +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0; + +/* From clock@4 */ +asm (".weak __metal_dt_clock_4"); +struct __metal_driver_sifive_fe310_g000_pll __metal_dt_clock_4; + +/* From prci@10008000 */ +asm (".weak __metal_dt_prci_10008000"); +struct __metal_driver_sifive_fe310_g000_prci __metal_dt_prci_10008000; + +/* From clock@1 */ +asm (".weak __metal_dt_clock_1"); +struct __metal_driver_sifive_fe310_g000_hfxosc __metal_dt_clock_1; + +/* From clock@3 */ +asm (".weak __metal_dt_clock_3"); +struct __metal_driver_sifive_fe310_g000_hfrosc __metal_dt_clock_3; + +/* From gpio@10012000 */ +asm (".weak __metal_dt_gpio_10012000"); +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_10012000; + +/* From serial@10013000 */ +asm (".weak __metal_dt_serial_10013000"); +struct __metal_driver_sifive_uart0 __metal_dt_serial_10013000; + +/* From cpu@0 */ +struct __metal_driver_cpu __metal_dt_cpu_0 = { + .vtable = &__metal_driver_vtable_cpu, + .cpu.vtable = &__metal_driver_vtable_cpu.cpu_vtable, + .timebase = 1000000UL, + .interrupt_controller = &__metal_dt_interrupt_controller.controller, +}; + +/* From cpu@0 */ +#define __METAL_DT_RISCV_CPU_HANDLE (&__metal_dt_cpu_0.cpu) + +#define __METAL_DT_CPU_0_HANDLE (&__metal_dt_cpu_0.cpu) + +/* From clock@0 */ +struct __metal_driver_fixed_clock __metal_dt_clock_0 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 16000000UL, +}; + +/* From clock@2 */ +struct __metal_driver_fixed_clock __metal_dt_clock_2 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 72000000UL, +}; + +/* From clock@5 */ +struct __metal_driver_fixed_clock __metal_dt_clock_5 = { + .vtable = &__metal_driver_vtable_fixed_clock, + .clock.vtable = &__metal_driver_vtable_fixed_clock.clock, + .rate = 32000000UL, +}; + +/* From interrupt_controller */ +struct __metal_driver_riscv_cpu_intc __metal_dt_interrupt_controller = { + .vtable = &__metal_driver_vtable_riscv_cpu_intc, + .controller.vtable = &__metal_driver_vtable_riscv_cpu_intc.controller_vtable, + .init_done = 0, + .interrupt_controller = 1, +}; + +/* From interrupt_controller */ +#define __METAL_DT_RISCV_CPU_INTC_HANDLE (&__metal_dt_interrupt_controller.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_HANDLE (&__metal_dt_interrupt_controller.controller) + +/* From clint@2000000 */ +struct __metal_driver_riscv_clint0 __metal_dt_clint_2000000 = { + .vtable = &__metal_driver_vtable_riscv_clint0, + .controller.vtable = &__metal_driver_vtable_riscv_clint0.clint_vtable, + .control_base = 33554432UL, + .control_size = 65536UL, + .init_done = 0, + .num_interrupts = METAL_MAX_CLINT_INTERRUPTS, + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_lines[0] = 3, + .interrupt_lines[1] = 7, +}; + +/* From clint@2000000 */ +#define __METAL_DT_RISCV_CLINT0_HANDLE (&__metal_dt_clint_2000000.controller) + +#define __METAL_DT_CLINT_2000000_HANDLE (&__metal_dt_clint_2000000.controller) + +/* From local_external_interrupts_0 */ +struct __metal_driver_sifive_local_external_interrupts0 __metal_dt_local_external_interrupts_0 = { + .vtable = &__metal_driver_vtable_sifive_local_external_interrupts0, + .irc.vtable = &__metal_driver_vtable_sifive_local_external_interrupts0.local0_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .num_interrupts = METAL_MAX_LOCAL_EXT_INTERRUPTS, + .interrupt_lines[0] = 16, + .interrupt_lines[1] = 17, + .interrupt_lines[2] = 18, + .interrupt_lines[3] = 19, + .interrupt_lines[4] = 20, + .interrupt_lines[5] = 21, + .interrupt_lines[6] = 22, + .interrupt_lines[7] = 23, + .interrupt_lines[8] = 24, + .interrupt_lines[9] = 25, + .interrupt_lines[10] = 26, + .interrupt_lines[11] = 27, + .interrupt_lines[12] = 28, + .interrupt_lines[13] = 29, + .interrupt_lines[14] = 30, + .interrupt_lines[15] = 31, +}; + +/* From local_external_interrupts_0 */ +#define __METAL_DT_SIFIVE_LOCAL_EXINTR0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +#define __METAL_DT_LOCAL_EXTERNAL_INTERRUPTS_0_HANDLE (&__metal_dt_local_external_interrupts_0.irc) + +/* From interrupt_controller@c000000 */ +struct __metal_driver_riscv_plic0 __metal_dt_interrupt_controller_c000000 = { + .vtable = &__metal_driver_vtable_riscv_plic0, + .controller.vtable = &__metal_driver_vtable_riscv_plic0.plic_vtable, + .init_done = 0, +/* From interrupt_controller */ + .interrupt_parent = &__metal_dt_interrupt_controller.controller, + .interrupt_line = 11UL, + .control_base = 201326592UL, + .control_size = 67108864UL, + .max_priority = 7UL, + .num_interrupts = 26UL, + .interrupt_controller = 1, +}; + +/* From interrupt_controller@c000000 */ +#define __METAL_DT_RISCV_PLIC0_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +#define __METAL_DT_INTERRUPT_CONTROLLER_C000000_HANDLE (&__metal_dt_interrupt_controller_c000000.controller) + +/* From clock@4 */ +struct __metal_driver_sifive_fe310_g000_pll __metal_dt_clock_4 = { + .vtable = &__metal_driver_vtable_sifive_fe310_g000_pll, + .clock.vtable = &__metal_driver_vtable_sifive_fe310_g000_pll.clock, +/* From clock@3 */ + .pllsel0 = &__metal_dt_clock_3.clock, +/* From clock@1 */ + .pllref = &__metal_dt_clock_1.clock, +/* From prci@10008000 */ + .divider_base = &__metal_dt_prci_10008000, + .divider_offset = 12UL, +/* From prci@10008000 */ + .config_base = &__metal_dt_prci_10008000, + .config_offset = 8UL, + .init_rate = 16000000UL, +}; + +/* From clock@4 */ +#define __METAL_DT_SIFIVE_FE310_G000_PLL_HANDLE (&__metal_dt_clock_4) + +#define __METAL_DT_CLOCK_4_HANDLE (&__metal_dt_clock_4) + +/* From prci@10008000 */ +struct __metal_driver_sifive_fe310_g000_prci __metal_dt_prci_10008000 = { + .vtable = &__metal_driver_vtable_sifive_fe310_g000_prci, + .base = 268468224UL, + .size = 32768UL, +}; + +/* From clock@1 */ +struct __metal_driver_sifive_fe310_g000_hfxosc __metal_dt_clock_1 = { + .vtable = &__metal_driver_vtable_sifive_fe310_g000_hfxosc, + .clock.vtable = &__metal_driver_vtable_sifive_fe310_g000_hfxosc.clock, +/* From clock@0 */ + .ref = &__metal_dt_clock_0.clock, +/* From prci@10008000 */ + .config_base = &__metal_dt_prci_10008000, + .config_offset = 4UL, +}; + +/* From clock@3 */ +struct __metal_driver_sifive_fe310_g000_hfrosc __metal_dt_clock_3 = { + .vtable = &__metal_driver_vtable_sifive_fe310_g000_hfrosc, + .clock.vtable = &__metal_driver_vtable_sifive_fe310_g000_hfrosc.clock, +/* From clock@2 */ + .ref = &__metal_dt_clock_2.clock, +/* From prci@10008000 */ + .config_base = &__metal_dt_prci_10008000, + .config_offset = 0UL, +}; + +/* From gpio@10012000 */ +struct __metal_driver_sifive_gpio0 __metal_dt_gpio_10012000 = { + .vtable = &__metal_driver_vtable_sifive_gpio0, + .base = 268509184UL, + .size = 4096UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_GPIO_INTERRUPTS, + .interrupt_lines[0] = 7, + .interrupt_lines[1] = 8, + .interrupt_lines[2] = 9, + .interrupt_lines[3] = 10, + .interrupt_lines[4] = 11, + .interrupt_lines[5] = 12, + .interrupt_lines[6] = 13, + .interrupt_lines[7] = 14, + .interrupt_lines[8] = 15, + .interrupt_lines[9] = 16, + .interrupt_lines[10] = 17, + .interrupt_lines[11] = 18, + .interrupt_lines[12] = 19, + .interrupt_lines[13] = 20, + .interrupt_lines[14] = 21, + .interrupt_lines[15] = 22, +}; + +/* From serial@10013000 */ +struct __metal_driver_sifive_uart0 __metal_dt_serial_10013000 = { + .vtable = &__metal_driver_vtable_sifive_uart0, + .uart.vtable = &__metal_driver_vtable_sifive_uart0.uart, + .control_base = 268513280UL, + .control_size = 4096UL, +/* From clock@4 */ + .clock = &__metal_dt_clock_4.clock, +/* From gpio@10012000 */ + .pinmux = &__metal_dt_gpio_10012000, + .pinmux_output_selector = 196608UL, + .pinmux_source_selector = 196608UL, +/* From interrupt_controller@c000000 */ + .interrupt_parent = &__metal_dt_interrupt_controller_c000000.controller, + .num_interrupts = METAL_MAX_UART_INTERRUPTS, + .interrupt_line = 5UL, +}; + +/* From serial@10013000 */ +#define __METAL_DT_STDOUT_UART_HANDLE (&__metal_dt_serial_10013000.uart) + +#define __METAL_DT_SERIAL_10013000_HANDLE (&__metal_dt_serial_10013000.uart) + +#define __METAL_DT_STDOUT_UART_BAUD 115200 + +#define __METAL_DT_MAX_HARTS 1 + +asm (".weak __metal_cpu_table"); +struct __metal_driver_cpu *__metal_cpu_table[] = { + &__metal_dt_cpu_0}; + +#define __METAL_DT_MAX_LEDS 0 + +asm (".weak __metal_led_table"); +struct __metal_driver_sifive_gpio_led *__metal_led_table[] = { + NULL }; +#define __METAL_DT_MAX_BUTTONS 0 + +asm (".weak __metal_button_table"); +struct __metal_driver_sifive_gpio_button *__metal_button_table[] = { + NULL }; +#define __METAL_DT_MAX_SWITCHES 0 + +asm (".weak __metal_switch_table"); +struct __metal_driver_sifive_gpio_switch *__metal_switch_table[] = { + NULL }; +#endif + +#endif /*METAL__MACHINE__SIFIVE_HIFIVE1__METAL_H*/ + +#endif/*ASSEMBLY*/ diff --git a/bsp/sifive-hifive1/mee.lds b/bsp/sifive-hifive1/metal.lds index 1c894ee..fdd23c7 100644 --- a/bsp/sifive-hifive1/mee.lds +++ b/bsp/sifive-hifive1/metal.lds @@ -25,7 +25,7 @@ SECTIONS .init : { - KEEP (*(.text.mee.init.enter)) + KEEP (*(.text.metal.init.enter)) KEEP (*(SORT_NONE(.init))) } >flash AT>flash :flash @@ -124,14 +124,14 @@ SECTIONS .litimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_source_start = . ); + PROVIDE( metal_segment_itim_source_start = . ); } >flash AT>flash :flash .ditimalign : { . = ALIGN(4); - PROVIDE( mee_segment_itim_target_start = . ); + PROVIDE( metal_segment_itim_target_start = . ); } >ram AT>flash :ram_init @@ -141,21 +141,21 @@ SECTIONS . = ALIGN(8); - PROVIDE( mee_segment_itim_target_end = . ); + PROVIDE( metal_segment_itim_target_end = . ); .lalign : { . = ALIGN(4); PROVIDE( _data_lma = . ); - PROVIDE( mee_segment_data_source_start = . ); + PROVIDE( metal_segment_data_source_start = . ); } >flash AT>flash :flash .dalign : { . = ALIGN(4); - PROVIDE( mee_segment_data_target_start = . ); + PROVIDE( metal_segment_data_target_start = . ); } >ram AT>flash :ram_init @@ -179,10 +179,10 @@ SECTIONS . = ALIGN(4); PROVIDE( _edata = . ); PROVIDE( edata = . ); - PROVIDE( mee_segment_data_target_end = . ); + PROVIDE( metal_segment_data_target_end = . ); PROVIDE( _fbss = . ); PROVIDE( __bss_start = . ); - PROVIDE( mee_segment_bss_target_start = . ); + PROVIDE( metal_segment_bss_target_start = . ); .bss : @@ -199,24 +199,24 @@ SECTIONS . = ALIGN(8); PROVIDE( _end = . ); PROVIDE( end = . ); - PROVIDE( mee_segment_bss_target_end = . ); + PROVIDE( metal_segment_bss_target_end = . ); .stack : { - PROVIDE(mee_segment_stack_begin = .); + PROVIDE(metal_segment_stack_begin = .); . = __stack_size; PROVIDE( _sp = . ); - PROVIDE(mee_segment_stack_end = .); + PROVIDE(metal_segment_stack_end = .); } >ram AT>ram :ram .heap : { - PROVIDE( mee_segment_heap_target_start = . ); + PROVIDE( metal_segment_heap_target_start = . ); . = __heap_size; . = __heap_size == 0 ? 0 : ORIGIN(ram) + LENGTH(ram); - PROVIDE( mee_segment_heap_target_end = . ); + PROVIDE( metal_segment_heap_target_end = . ); PROVIDE( _heap_end = . ); } >ram AT>ram :ram diff --git a/bsp/update-targets.sh b/bsp/update-targets.sh index fc1b76c..049cbb1 100755 --- a/bsp/update-targets.sh +++ b/bsp/update-targets.sh @@ -56,13 +56,13 @@ else fi DTC=dtc -MEE_HEADER_GENERATOR=freedom-mee_header-generator +MEE_HEADER_GENERATOR=freedom-metal_header-generator LDSCRIPT_GENERATOR=freedom-ldscript-generator DTS_FILENAME=design.dts DTB_FILENAME=temp.dtb -HEADER_FILENAME=mee.h -LDSCRIPT_FILENAME=mee.lds +HEADER_FILENAME=metal.h +LDSCRIPT_FILENAME=metal.lds update_target() { TARGET=$1 diff --git a/freedom-mee b/freedom-mee deleted file mode 160000 -Subproject b2faac6162121b42ee05d77d0506a4d2a729519 diff --git a/freedom-metal b/freedom-metal new file mode 160000 +Subproject 28bf5d242c05da6bb1a7dacd6e6481388913290 diff --git a/scripts/standalone.mk b/scripts/standalone.mk index a73093f..52926ac 100644 --- a/scripts/standalone.mk +++ b/scripts/standalone.mk @@ -83,9 +83,9 @@ PROGRAM_SRCS = $(wildcard $(SRC_DIR)/*.c) $(wildcard $(SRC_DIR)/*.h) $(wildcard $(PROGRAM_ELF): \ $(PROGRAM_SRCS) \ - $(BSP_DIR)/install/lib/libmee.a \ - $(BSP_DIR)/install/lib/libmee-gloss.a \ - $(BSP_DIR)/mee.lds + $(BSP_DIR)/install/lib/libmetal.a \ + $(BSP_DIR)/install/lib/libmetal-gloss.a \ + $(BSP_DIR)/metal.lds $(MAKE) -C $(dir $@) $(notdir $@) \ AR=$(RISCV_AR) \ CC=$(RISCV_GCC) \ @@ -93,7 +93,7 @@ $(PROGRAM_ELF): \ CFLAGS="-Os -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) -g -mcmodel=medany -I$(abspath $(BSP_DIR)/install/include/)" \ CXXFLAGS="-Os -march=$(RISCV_ARCH) -mabi=$(RISCV_ABI) -g -mcmodel=medany -I$(abspath $(BSP_DIR)/install/include/)" \ LDFLAGS="-nostartfiles -nostdlib -L$(sort $(dir $(abspath $(filter %.a,$^)))) -T$(abspath $(filter %.lds,$^))" \ - LDLIBS="-Wl,--start-group -lc -lgcc -lmee -lmee-gloss -Wl,--end-group" + LDLIBS="-Wl,--start-group -lc -lgcc -lmetal -lmetal-gloss -Wl,--end-group" touch -c $@ .PHONY: clean-software diff --git a/software/example-itim b/software/example-itim -Subproject b8a9d9d62fe10625a3b62e1cc074b40311975b1 +Subproject 592565d30b00b9d90291c59cb9dee8afccb4d5d diff --git a/software/example-pmp b/software/example-pmp -Subproject 1f19359da8ef994230193f3a1ca3bba051a1ec4 +Subproject 590115451b04422e933576dba846aa8e39a6cf0 diff --git a/software/local-interrupt b/software/local-interrupt -Subproject 9aba96b134311137c38e0e6f4e028076cee7c6c +Subproject af319047d727d996954ac9d42e5c1e85727c33e diff --git a/software/software-interrupt b/software/software-interrupt -Subproject bd3fdc86c6406fbb30c9b35b788e897966524ba +Subproject f001c15eaa3513bf57ebbe2b5d1b5eab659ade7 diff --git a/software/timer-interrupt b/software/timer-interrupt -Subproject 3590303f0b6c867b04dc622362ea0050f99d38f +Subproject 238b3a491ecb410573f529f83d4e6791733d0ee |