diff options
Diffstat (limited to 'rv64cpu/sw')
| -rw-r--r-- | rv64cpu/sw/CMakeLists.txt | 71 | ||||
| -rw-r--r-- | rv64cpu/sw/common/link.ld | 76 |
2 files changed, 0 insertions, 147 deletions
diff --git a/rv64cpu/sw/CMakeLists.txt b/rv64cpu/sw/CMakeLists.txt deleted file mode 100644 index c43580f..0000000 --- a/rv64cpu/sw/CMakeLists.txt +++ /dev/null @@ -1,71 +0,0 @@ -# ─── Software Build (Bare-Metal) ───────────────────────────────────────────────── -# -# This CMakeLists.txt is only included when BUILD_SW=ON and requires -# the RISC-V cross-compilation toolchain: -# -# cmake -B build_sw -DBUILD_SW=ON \ -# -DCMAKE_TOOLCHAIN_FILE=tools/toolchain-riscv64.cmake -# -# ───────────────────────────────────────────────────────────────────────────────── - -enable_language(ASM) - -set(LINKER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/common/link.ld) -set(STARTUP_SRC ${CMAKE_CURRENT_SOURCE_DIR}/common/start.S) - -# ─── Helper: create a bare-metal firmware target ───────────────────────────────── -function(add_firmware) - cmake_parse_arguments(FW "" "NAME" "SOURCES" ${ARGN}) - - add_executable(${FW_NAME}.elf - ${STARTUP_SRC} - ${FW_SOURCES} - ) - - target_include_directories(${FW_NAME}.elf PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/common - ) - - target_link_options(${FW_NAME}.elf PRIVATE - -T${LINKER_SCRIPT} - -Wl,-Map=${FW_NAME}.map - ) - - # Generate .bin - add_custom_command(TARGET ${FW_NAME}.elf POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -O binary - ${FW_NAME}.elf ${FW_NAME}.bin - COMMENT "Generating ${FW_NAME}.bin" - ) - - # Generate .hex (for $readmemh) - add_custom_command(TARGET ${FW_NAME}.elf POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -O verilog - ${FW_NAME}.elf ${FW_NAME}.hex - COMMENT "Generating ${FW_NAME}.hex" - ) - - # Print size - add_custom_command(TARGET ${FW_NAME}.elf POST_BUILD - COMMAND ${CMAKE_SIZE} ${FW_NAME}.elf - ) -endfunction() - -# ═══════════════════════════════════════════════════════════════════════════════════ -# Firmware Targets — uncomment as you create the source files -# ═══════════════════════════════════════════════════════════════════════════════════ -# -# add_firmware( -# NAME hello_uart -# SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/baremetal/hello_uart/main.c -# ) -# -# add_firmware( -# NAME timer_irq -# SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/baremetal/timer_irq/main.c -# ) -# -# add_firmware( -# NAME cache_test -# SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/baremetal/cache_test/main.c -# ) diff --git a/rv64cpu/sw/common/link.ld b/rv64cpu/sw/common/link.ld deleted file mode 100644 index 705a25d..0000000 --- a/rv64cpu/sw/common/link.ld +++ /dev/null @@ -1,76 +0,0 @@ -/* ═══════════════════════════════════════════════════════════════════════════════ - * richard-cpu Linker Script - * - * Memory map matches rtl/soc/mem_map.sv - * ═══════════════════════════════════════════════════════════════════════════════ */ - -OUTPUT_ARCH("riscv") -ENTRY(_start) - -MEMORY -{ - /* Boot ROM / SRAM — 256 MB total addressable, practical limit is FPGA BRAM */ - ROM (rx) : ORIGIN = 0x00000000, LENGTH = 64K - RAM (rwx) : ORIGIN = 0x00010000, LENGTH = 256M - 64K -} - -SECTIONS -{ - /* ── Code ──────────────────────────────────────────────────────────────── */ - .text : ALIGN(4) - { - *(.text.init) /* _start / trap vector MUST be first */ - *(.text .text.*) - } > ROM - - /* ── Read-only data ───────────────────────────────────────────────────── */ - .rodata : ALIGN(8) - { - *(.rodata .rodata.*) - *(.srodata .srodata.*) - } > ROM - - /* ── Initialized data (load from ROM, copy to RAM) ────────────────────── */ - .data : ALIGN(8) - { - _data_start = .; - *(.data .data.*) - *(.sdata .sdata.*) - _data_end = .; - } > RAM AT > ROM - - _data_load = LOADADDR(.data); - - /* ── BSS (zero-initialized) ──────────────────────────────────────────── */ - .bss (NOLOAD) : ALIGN(8) - { - _bss_start = .; - *(.bss .bss.*) - *(.sbss .sbss.*) - *(COMMON) - _bss_end = .; - } > RAM - - /* ── Stack (grows downward) ──────────────────────────────────────────── */ - . = ALIGN(16); - _stack_bottom = .; - . = . + 8K; - _stack_top = .; - - /* ── Heap ────────────────────────────────────────────────────────────── */ - _heap_start = .; - - /* ── tohost / fromhost (Compliance test interface) ────────────────────── */ - .tohost (NOLOAD) : ALIGN(8) - { - PROVIDE(tohost = .); . += 8; - PROVIDE(fromhost = .); . += 8; - } > RAM - - /DISCARD/ : - { - *(.comment) - *(.note.*) - *(.eh_frame*) - } -} |
