aboutsummaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rwxr-xr-xsrc/main.rs28
1 files changed, 3 insertions, 25 deletions
diff --git a/src/main.rs b/src/main.rs
index c0d41d3..8d95d00 100755
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,11 +1,11 @@
-#![feature(naked_functions)]
-
#![no_std]
#![no_main]
-use core::arch::asm;
+use core::arch::global_asm;
use gd32vf103_pac::Peripherals;
+global_asm!(include_str!("boot.S"));
+
#[no_mangle]
fn main(_hartid: usize) -> ! {
// let peripherals = Peripherals::take().unwrap();
@@ -49,28 +49,6 @@ fn main(_hartid: usize) -> ! {
}
}
-#[naked]
-#[link_section = ".text.init"]
-#[export_name = "_start"]
-unsafe extern "C" fn _start() -> ! {
- // At boot, the hart is in privilege mode M, mstatus fields MIE
- // and MPRV are 0, the pc is set to a reset vector, the mcause
- // register specifies why the reset occurred.
- // c.f.: [^super::rism2] ยง 3.4 (Reset)
- asm!(
- ".option push",
- ".option norelax",
- "la gp, __global_pointer$",
- ".option pop",
-
- "csrr a0, mhartid",
- "la sp, _stack_top",
-
- "tail main",
- options(noreturn)
- )
-}
-
#[panic_handler]
fn panic(info: &core::panic::PanicInfo) -> ! {
if let Some(loc) = info.location() {