From 926b360655fd7a22413c7732faceeea21a224aa1 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 17 Feb 2017 01:54:41 -0800 Subject: WIP towards ECALL interface for SBI --- dummy_payload/dummy_entry.S | 22 ++++++++++++++++++++++ dummy_payload/dummy_payload.c | 21 --------------------- dummy_payload/dummy_payload.lds | 4 ++++ dummy_payload/dummy_payload.mk.in | 2 +- dummy_payload/dummy_sbi.S | 1 - 5 files changed, 27 insertions(+), 23 deletions(-) create mode 100644 dummy_payload/dummy_entry.S delete mode 120000 dummy_payload/dummy_sbi.S (limited to 'dummy_payload') diff --git a/dummy_payload/dummy_entry.S b/dummy_payload/dummy_entry.S new file mode 100644 index 0000000..46c0b7f --- /dev/null +++ b/dummy_payload/dummy_entry.S @@ -0,0 +1,22 @@ +#include "mcall.h" + + .section ".text.init" + .globl _start +_start: + la s0, str +1: + lbu a0, (s0) + beqz a0, 1f + li a7, MCALL_CONSOLE_PUTCHAR + ecall + add s0, s0, 1 + j 1b + +1: + li a7, MCALL_SHUTDOWN + ecall + + .data +str: + .asciz "This is bbl's dummy_payload. To boot a real kernel, reconfigure\n\ +bbl with the flag --with-payload=PATH, then rebuild bbl.\n" diff --git a/dummy_payload/dummy_payload.c b/dummy_payload/dummy_payload.c index 61ed59a..e69de29 100644 --- a/dummy_payload/dummy_payload.c +++ b/dummy_payload/dummy_payload.c @@ -1,21 +0,0 @@ -#include -#include "sbi.h" - -asm (".globl _start\n\ - _start: la sp, stack\n\ - j entry\n\ - .pushsection .rodata\n\ - .align 4\n\ - .skip 4096\n\ - stack:\n\ - .popsection"); - -void entry() -{ - const char* message = -"This is bbl's dummy_payload. To boot a real kernel, reconfigure\n\ -bbl with the flag --with-payload=PATH, then rebuild bbl.\n"; - while (*message) - sbi_console_putchar(*message++); - sbi_shutdown(); -} diff --git a/dummy_payload/dummy_payload.lds b/dummy_payload/dummy_payload.lds index ee9410b..0506a8d 100644 --- a/dummy_payload/dummy_payload.lds +++ b/dummy_payload/dummy_payload.lds @@ -1,3 +1,7 @@ +ENTRY(_start) + SECTIONS { . = -0x80000000; + + .text.init : { *(.text.init) } } diff --git a/dummy_payload/dummy_payload.mk.in b/dummy_payload/dummy_payload.mk.in index b1d4ac7..4a133be 100644 --- a/dummy_payload/dummy_payload.mk.in +++ b/dummy_payload/dummy_payload.mk.in @@ -5,7 +5,7 @@ dummy_payload_hdrs = \ dummy_payload_c_srcs = \ dummy_payload_asm_srcs = \ - dummy_sbi.S \ + dummy_entry.S \ dummy_payload_test_srcs = diff --git a/dummy_payload/dummy_sbi.S b/dummy_payload/dummy_sbi.S deleted file mode 120000 index 2978a97..0000000 --- a/dummy_payload/dummy_sbi.S +++ /dev/null @@ -1 +0,0 @@ -../machine/sbi.S \ No newline at end of file -- cgit v1.1