aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/init/start.S
blob: 759c40931cd32930b10b617b70e5444020e0be71 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* SPDX-License-Identifier: copyleft-next-0.3.1 */
/* Copyright 2021 - 2022, Kim Kuparinen < kimi.h.kuparinen@gmail.com > */

.section .init.start
.global _start
/* Entry point to the kernel loader. */
_start:
/* get load address */
auipc a1, 0
/* keep using bootloader stack for now */
//li sp, PM_STACK_TOP
/* make sure there's no garbage in tp, important for id assignment */
li tp, 0
call init

.section .text
.global jump_to_kernel
jump_to_kernel:
li sp, VM_STACK_TOP // load virtual stack address
li fp, 0
li gp, 0
jr a2 // jump to kernel

/* there should be a kernel payload after this address */
.section .top
.global __kernel
__kernel: