update
This commit is contained in:
parent
e9ad65f77f
commit
ca02b44b71
7 changed files with 43 additions and 17 deletions
|
@ -1,13 +0,0 @@
|
||||||
cmake_minimum_required(VERSION 3.25)
|
|
||||||
|
|
||||||
project(EOS0 CXX)
|
|
||||||
|
|
||||||
include(FetchContent)
|
|
||||||
FetchContent_Declare(
|
|
||||||
Corrosion
|
|
||||||
GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git
|
|
||||||
GIT_TAG v0.4 # Optionally specify a commit hash, version tag or branch here
|
|
||||||
)
|
|
||||||
FetchContent_MakeAvailable(Corrosion)
|
|
||||||
|
|
||||||
corrosion_import_crate(MANIFEST_PATH kernel/Cargo.toml)
|
|
|
@ -3,7 +3,7 @@
|
||||||
"crt-objects-fallback": "false",
|
"crt-objects-fallback": "false",
|
||||||
"data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
|
"data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
|
||||||
"disable-redzone": true,
|
"disable-redzone": true,
|
||||||
"features": "+v8a,+strict-align,-neon,+fp-armv8",
|
"features": "-align,-neon",
|
||||||
"linker": "rust-lld",
|
"linker": "rust-lld",
|
||||||
"linker-flavor": "gnu-lld",
|
"linker-flavor": "gnu-lld",
|
||||||
"llvm-target": "aarch64-unknown-none",
|
"llvm-target": "aarch64-unknown-none",
|
||||||
|
|
|
@ -17,7 +17,8 @@ mod panic;
|
||||||
mod spinlock;
|
mod spinlock;
|
||||||
mod uart;
|
mod uart;
|
||||||
|
|
||||||
global_asm!(include_str!("start.s"));
|
// global_asm!(include_str!("start.s"));
|
||||||
|
global_asm!(include_str!("riscv64gc/start.s"));
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn main() {
|
pub extern "C" fn main() {
|
||||||
|
|
15
kernel/src/riscv64gc/start.s
Normal file
15
kernel/src/riscv64gc/start.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
.section .text
|
||||||
|
|
||||||
|
.global _entry
|
||||||
|
|
||||||
|
_entry:
|
||||||
|
la sp, stack0
|
||||||
|
li a0, 1024*4
|
||||||
|
csrr a1, mhartid
|
||||||
|
addi a1, a1, 1
|
||||||
|
mul a0, a0, a1
|
||||||
|
add sp, sp, a0
|
||||||
|
call main
|
||||||
|
|
||||||
|
spin:
|
||||||
|
j spin
|
|
@ -8,7 +8,7 @@ pub struct SpinLock {
|
||||||
impl SpinLock {
|
impl SpinLock {
|
||||||
pub fn init(name: &'static str) -> Self {
|
pub fn init(name: &'static str) -> Self {
|
||||||
let mut this_name = [0; 32];
|
let mut this_name = [0; 32];
|
||||||
this_name.copy_from_slice(&name.as_bytes()[..32]);
|
this_name.copy_from_slice(&name.as_bytes()[..32.min(name.len())]);
|
||||||
|
|
||||||
SpinLock {
|
SpinLock {
|
||||||
locked: false,
|
locked: false,
|
||||||
|
|
22
riscv64gc-unknown-none-elf.json
Normal file
22
riscv64gc-unknown-none-elf.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"arch": "riscv64",
|
||||||
|
"code-model": "medium",
|
||||||
|
"cpu": "generic-rv64",
|
||||||
|
"crt-objects-fallback": "false",
|
||||||
|
"data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128",
|
||||||
|
"eh-frame-header": false,
|
||||||
|
"emit-debug-gdb-scripts": true,
|
||||||
|
"features": "+m,+a,+f,+d,+c",
|
||||||
|
"linker": "rust-lld",
|
||||||
|
"linker-flavor": "gnu-lld",
|
||||||
|
"llvm-abiname": "lp64d",
|
||||||
|
"llvm-target": "riscv64",
|
||||||
|
"max-atomic-width": 64,
|
||||||
|
"panic-strategy": "abort",
|
||||||
|
"relocation-model": "static",
|
||||||
|
"pre-link-args": {
|
||||||
|
"gnu-lld": ["-Taarch64-qemu.ld"]
|
||||||
|
},
|
||||||
|
"supported-sanitizers": ["kernel-address"],
|
||||||
|
"target-pointer-width": "64"
|
||||||
|
}
|
3
run.sh
3
run.sh
|
@ -2,7 +2,7 @@ set -euo pipefail
|
||||||
cargo xbuild --target=aarch64-unknown-none.json
|
cargo xbuild --target=aarch64-unknown-none.json
|
||||||
|
|
||||||
DEBUG=
|
DEBUG=
|
||||||
# DEBUG="-s -S -d exec"
|
DEBUG="-s -S -d exec"
|
||||||
|
|
||||||
printf "Running with qemu...\n"
|
printf "Running with qemu...\n"
|
||||||
set -x
|
set -x
|
||||||
|
@ -11,5 +11,6 @@ exec qemu-system-aarch64 \
|
||||||
$DEBUG \
|
$DEBUG \
|
||||||
-m 1024M \
|
-m 1024M \
|
||||||
-cpu cortex-a53 \
|
-cpu cortex-a53 \
|
||||||
|
-no-reboot \
|
||||||
-nographic \
|
-nographic \
|
||||||
-kernel target/aarch64-unknown-none/debug/kernel
|
-kernel target/aarch64-unknown-none/debug/kernel
|
||||||
|
|
Loading…
Reference in a new issue