diff --git a/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs b/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs index d0cc95a030..53cc132fad 100644 --- a/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs +++ b/boards/risc-v/qemu-rv/rv-virt/scripts/Make.defs @@ -24,11 +24,7 @@ include $(TOPDIR)/arch/risc-v/src/common/Toolchain.defs ifeq ($(CONFIG_ARCH_CHIP_QEMU_RV),y) ifeq ($(CONFIG_BUILD_KERNEL),y) -ifeq ($(CONFIG_ARCH_CHIP_QEMU_RV64),y) - LDSCRIPT = ld-kernel64.script -else - LDSCRIPT = ld-kernel32.script -endif + LDSCRIPT = ld-kernel.script else LDSCRIPT = ld.script endif diff --git a/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel32.script b/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script similarity index 87% rename from boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel32.script rename to boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script index 051f3e3e83..193a833f32 100644 --- a/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel32.script +++ b/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel.script @@ -18,11 +18,26 @@ * ****************************************************************************/ +#include + +#define KTEXT_ADDR 0x80200000 + +#ifdef CONFIG_ARCH_RV32 +#define KTEXT_SIZE 4194304 +#else +#define KTEXT_SIZE 2097152 +#endif + +#define KSRAM_ADDR (CONFIG_RAM_START) +#define KSRAM_SIZE (CONFIG_RAM_SIZE) +#define PGRAM_ADDR (CONFIG_ARCH_PGPOOL_PBASE) +#define PGRAM_SIZE (CONFIG_ARCH_PGPOOL_SIZE) + MEMORY { - kflash (rx) : ORIGIN = 0x80200000, LENGTH = 4096K /* w/ cache */ - ksram (rwx) : ORIGIN = 0x80600000, LENGTH = 4096K /* w/ cache */ - pgram (rwx) : ORIGIN = 0x80a00000, LENGTH = 4096K /* w/ cache */ + kflash (rx) : ORIGIN = KTEXT_ADDR, LENGTH = KTEXT_SIZE /* w/ cache */ + ksram (rwx) : ORIGIN = KSRAM_ADDR, LENGTH = KSRAM_SIZE /* w/ cache */ + pgram (rwx) : ORIGIN = PGRAM_ADDR, LENGTH = PGRAM_SIZE /* w/ cache */ } OUTPUT_ARCH("riscv") diff --git a/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel64.script b/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel64.script deleted file mode 100644 index ce344fc950..0000000000 --- a/boards/risc-v/qemu-rv/rv-virt/scripts/ld-kernel64.script +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** - * boards/risc-v/qemu-rv/rv-virt/scripts/ld.script - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. The - * ASF licenses this file to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance with the - * License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - ****************************************************************************/ - -MEMORY -{ - kflash (rx) : ORIGIN = 0x80200000, LENGTH = 2048K /* w/ cache */ - ksram (rwx) : ORIGIN = 0x80400000, LENGTH = 2048K /* w/ cache */ - pgram (rwx) : ORIGIN = 0x80600000, LENGTH = 4096K /* w/ cache */ -} - -OUTPUT_ARCH("riscv") - -/* Provide the kernel boundaries */ - -__kflash_start = ORIGIN(kflash); -__kflash_size = LENGTH(kflash); -__ksram_start = ORIGIN(ksram); -__ksram_size = LENGTH(ksram); -__ksram_end = ORIGIN(ksram) + LENGTH(ksram); - -/* Page heap */ - -__pgheap_start = ORIGIN(pgram); -__pgheap_size = LENGTH(pgram); - -SECTIONS -{ - . = 0x80000000; - - /* where the global variable out-of-bounds detection information located */ -#ifdef CONFIG_MM_KASAN_GLOBAL - .kasan.unused : - { - *(.data..LASANLOC*) - } - .kasan.global : - { - KEEP (*(.data..LASAN0)) - KEEP (*(.data.rel.local..LASAN0)) - } -#endif - - .text : - { - _stext = . ; - *(.text) - *(.text.*) - *(.gnu.warning) - *(.stub) - *(.glue_7) - *(.glue_7t) - *(.jcr) - - /* C++ support: The .init and .fini sections contain specific logic - * to manage static constructors and destructors. - */ - - *(.gnu.linkonce.t.*) - *(.init) /* Old ABI */ - *(.fini) /* Old ABI */ - _etext = . ; - } - - .init_section : - { - _sinit = ABSOLUTE(.); - KEEP(*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) - KEEP(*(.init_array .ctors)) - _einit = ABSOLUTE(.); - } - - .rodata : - { - _srodata = . ; - *(.rodata) - *(.rodata1) - *(.rodata.*) - *(.gnu.linkonce.r*) - _erodata = . ; - } - - .tdata : { - _stdata = ABSOLUTE(.); - *(.tdata .tdata.* .gnu.linkonce.td.*); - _etdata = ABSOLUTE(.); - } - - .tbss : { - _stbss = ABSOLUTE(.); - *(.tbss .tbss.* .gnu.linkonce.tb.* .tcommon); - _etbss = ABSOLUTE(.); - } - - _eronly = ABSOLUTE(.); - - .data : - { - _sdata = . ; - *(.data) - *(.data1) - *(.data.*) - *(.gnu.linkonce.d*) - . = ALIGN(4); - _edata = . ; - } - - .bss : - { - _sbss = . ; - *(.bss) - *(.bss.*) - *(.sbss) - *(.sbss.*) - *(.gnu.linkonce.b*) - *(COMMON) - _ebss = . ; - } > ksram - - /* Page tables here, align to 4K boundary */ - - .pgtables (NOLOAD) : ALIGN(0x1000) { - *(.pgtables) - . = ALIGN(4); - } > ksram - - /* Stack top */ - - .stack_top : { - . = ALIGN(32); - _ebss = ABSOLUTE(.); - } > ksram - - /* Stabs debugging sections. */ - - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_info 0 : { *(.debug_info) } - .debug_line 0 : { *(.debug_line) } - .debug_pubnames 0 : { *(.debug_pubnames) } - .debug_aranges 0 : { *(.debug_aranges) } -} diff --git a/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt b/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt index c4ba3579b4..f33cd75cef 100644 --- a/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt +++ b/boards/risc-v/qemu-rv/rv-virt/src/CMakeLists.txt @@ -25,11 +25,7 @@ target_sources(board PRIVATE ${SRCS}) if(CONFIG_ARCH_CHIP_QEMU_RV) if(CONFIG_BUILD_KERNEL) - if(CONFIG_ARCH_CHIP_QEMU_RV64) - set(LDFILE ld-kernel64.script) - else() - set(LDFILE ld-kernel32.script) - endif() + set(LDFILE ld-kernel.script) else() set(LDFILE ld.script) endif()