Skip to content

Latest commit

 

History

History

01_wait_forever

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Tutorial 01 - Wait Forever

tl;dr

  • The project skeleton is set up.
  • A small piece of assembly code runs that just halts all CPU cores executing the kernel code.

Building

  • Makefile targets:
    • doc: Generate documentation.
    • qemu: Run the kernel in QEMU
    • clippy
    • clean
    • readelf: Inspect the ELF output.
    • objdump: Inspect the assembly.
    • nm: Inspect the symbols.

Code to look at

  • BSP-specific kernel.ld linker script.
    • Load address at 0x8_0000
    • Only .text section.
  • main.rs: Important inner attributes:
    • #![no_std], #![no_main]
  • boot.s: Assembly _start() function that executes wfe (Wait For Event), halting all cores that are executing _start().
  • We (have to) define a #[panic_handler] function to make the compiler happy.
    • Make it unimplemented!() because it will be stripped out since it is not used.

Test it

In the project folder, invoke QEMU and observe the CPU core spinning on wfe:

$ make qemu
[...]
IN:
0x00080000:  d503205f  wfe
0x00080004:  17ffffff  b        #0x80000
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy