coreboot-kgpe-d16/src/arch/riscv/bootblock.S
Jonathan Neuschäfer 8e63017096 arch/riscv: Refactor bootblock.S
A few things are currently missing:
- The trap handler doesn't set the stack pointer, which can easily
  result in trap loops or memory corruptions.
- The SBI trampolin page (as described in version 1.9 of the RISC-V
  Privileged Architecture Specification), has been removed for now.

Change-Id: Id89c859fab354501c94a0e82d349349c29fa4cc6
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Reviewed-on: https://review.coreboot.org/15591
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
2016-07-28 18:31:28 +02:00

48 lines
1.1 KiB
ArmAsm

/*
* Early initialization code for RISC-V
*
* Copyright 2013 Google Inc.
* Copyright 2016 Jonathan Neuschäfer <j.neuschaefer@gmx.net>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of
* the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
* GNU General Public License for more details.
*/
#include <arch/encoding.h>
.section ".text._start", "ax", %progbits
.globl _start
_start:
#define STACK_START 0x80800000 /* 2GiB + 8MiB */
#define STACK_SIZE 0x0000fff0
li sp, STACK_START + STACK_SIZE
# make room for HLS and initialize it
addi sp, sp, -64 // MENTRY_FRAME_SIZE
csrr a0, mhartid
call hls_init
# poison the stack
li t1, STACK_START
li t0, 0xdeadbeef
sd t0, 0(t1)
la t0, trap_entry
csrw mtvec, t0
# clear any pending interrupts
csrwi mip, 0
# set up the mstatus register for VM
call mstatus_init
tail main