mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-20 20:04:46 +00:00
riscv: Support standalone
Run hello_world successfully. U-Boot 2018.01-rc2-00033-gb265b91-dirty (Dec 22 2017 - 13:54:21 +0800) DRAM: 1 GiB MMC: mmc@f0e00000: 0 SF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB In: serial@f0300000 Out: serial@f0300000 Err: serial@f0300000 Net: Warning: mac@e0100000 (eth0) using random MAC address - 0a:47:9b:f8:b4:f2 eth0: mac@e0100000 RISC-V # mmc rescan RISC-V # fatls mmc 0:1 318907 u-boot-ae250-64.bin 1252 hello_world_ae250_32.bin 328787 u-boot-ae250-32.bin 3 file(s), 0 dir(s) RISC-V # fatload mmc 0:1 0x600000 hello_world_ae250_32.bin reading hello_world_ae250_32.bin 1252 bytes read in 23 ms (52.7 KiB/s) RISC-V # go 0x600000 Example expects ABI version 9 Actual U-Boot ABI version 9 Hello World argc = 1 argv[0] = "0x600000" argv[1] = "$B@" Hit any key to exit ... RISC-V # Signed-off-by: Rick Chen <rick@andestech.com> Signed-off-by: Rick Chen <rickchen36@gmail.com> Signed-off-by: Greentime Hu <green.hu@gmail.com>
This commit is contained in:
parent
42ac26f2b0
commit
c7d7e80acd
2 changed files with 53 additions and 0 deletions
41
examples/standalone/riscv.lds
Normal file
41
examples/standalone/riscv.lds
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2017 Andes Technology Corporation
|
||||||
|
* Rick Chen, Andes Technology Corporation <rick@andestech.com>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-2.0+
|
||||||
|
*/
|
||||||
|
|
||||||
|
OUTPUT_ARCH(riscv)
|
||||||
|
ENTRY(_start)
|
||||||
|
SECTIONS
|
||||||
|
{
|
||||||
|
. = ALIGN(4);
|
||||||
|
.text :
|
||||||
|
{
|
||||||
|
*(.text)
|
||||||
|
}
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
.data : {
|
||||||
|
__global_pointer$ = . + 0x800;
|
||||||
|
*(.data)
|
||||||
|
}
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
|
||||||
|
.got : {
|
||||||
|
__got_start = .;
|
||||||
|
*(.got)
|
||||||
|
__got_end = .;
|
||||||
|
}
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
__bss_start = .;
|
||||||
|
.bss : { *(.bss) }
|
||||||
|
__bss_end = .;
|
||||||
|
|
||||||
|
. = ALIGN(4);
|
||||||
|
.rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) }
|
||||||
|
|
||||||
|
_end = .;
|
||||||
|
}
|
|
@ -172,6 +172,18 @@ gd_t *global_data;
|
||||||
" lwi $r16, [$r16 + (%1)]\n" \
|
" lwi $r16, [$r16 + (%1)]\n" \
|
||||||
" jr $r16\n" \
|
" jr $r16\n" \
|
||||||
: : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "$r16");
|
: : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "$r16");
|
||||||
|
#elif defined(CONFIG_RISCV)
|
||||||
|
/*
|
||||||
|
* t7 holds the pointer to the global_data. gp is call clobbered.
|
||||||
|
*/
|
||||||
|
#define EXPORT_FUNC(f, a, x, ...) \
|
||||||
|
asm volatile ( \
|
||||||
|
" .globl " #x "\n" \
|
||||||
|
#x ":\n" \
|
||||||
|
" lw x19, %0(gp)\n" \
|
||||||
|
" lw x19, %1(x19)\n" \
|
||||||
|
" jr x19\n" \
|
||||||
|
: : "i"(offsetof(gd_t, jt)), "i"(FO(x)) : "x19");
|
||||||
#elif defined(CONFIG_ARC)
|
#elif defined(CONFIG_ARC)
|
||||||
/*
|
/*
|
||||||
* r25 holds the pointer to the global_data. r10 is call clobbered.
|
* r25 holds the pointer to the global_data. r10 is call clobbered.
|
||||||
|
|
Loading…
Add table
Reference in a new issue