misc: remove rpi3 target (for now)
This commit is contained in:
parent
59c30c32b4
commit
771408498d
7
Makefile
7
Makefile
@ -37,13 +37,6 @@ QEMU_OPTS+=-kernel $(O)/kernel.bin \
|
||||
-display none \
|
||||
-net none
|
||||
endif
|
||||
ifeq ($(MACH),rpi3)
|
||||
QEMU_OPTS+=-kernel $(O)/kernel.bin \
|
||||
-dtb etc/bcm2837-rpi-3-b-plus.dtb \
|
||||
-M raspi3b \
|
||||
-serial null \
|
||||
-serial chardev:serial1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(QEMU_DINT),1)
|
||||
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"arch": "aarch64",
|
||||
"data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128",
|
||||
"disable-redzone": true,
|
||||
"executables": true,
|
||||
"features": "+strict-align,+neon,+fp-armv8",
|
||||
"linker": "rust-lld",
|
||||
"linker-flavor": "ld.lld",
|
||||
"llvm-target": "aarch64-unknown-none",
|
||||
"max-atomic-width": 128,
|
||||
"panic-strategy": "abort",
|
||||
"relocation-model": "pic",
|
||||
"target-pointer-width": "64",
|
||||
"pre-link-args": {
|
||||
"ld.lld": [ "-Tetc/aarch64-rpi3.ld" ]
|
||||
}
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
ENTRY(_entry);
|
||||
|
||||
KERNEL_OFFSET = 0xFFFFFF8000000000;
|
||||
BASE_OFFSET = 0x80000;
|
||||
|
||||
SECTIONS {
|
||||
. = BASE_OFFSET;
|
||||
|
||||
.text.lower : {
|
||||
*(.text._entry)
|
||||
}
|
||||
|
||||
. = ALIGN(16);
|
||||
. = . + KERNEL_OFFSET;
|
||||
|
||||
PROVIDE(__kernel_start = .);
|
||||
|
||||
.text : AT(. - KERNEL_OFFSET) {
|
||||
*(.text._entry_upper)
|
||||
*(.text*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
.rodata : AT(. - KERNEL_OFFSET) {
|
||||
*(.rodata*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
.data : AT(. - KERNEL_OFFSET) {
|
||||
*(.data*)
|
||||
}
|
||||
|
||||
. = ALIGN(4K);
|
||||
PROVIDE(__bss_start_phys = . - KERNEL_OFFSET);
|
||||
PROVIDE(__bss_start = .);
|
||||
.bss : AT(. - KERNEL_OFFSET) {
|
||||
*(COMMON)
|
||||
*(.bss*)
|
||||
. = ALIGN(4K);
|
||||
}
|
||||
PROVIDE(__bss_end_phys = . - KERNEL_OFFSET);
|
||||
|
||||
PROVIDE(__kernel_end = .);
|
||||
PROVIDE(__kernel_end_phys = . - KERNEL_OFFSET);
|
||||
}
|
Binary file not shown.
@ -259,7 +259,7 @@ mod tests {
|
||||
unsafe impl Sync for A {}
|
||||
|
||||
let data = include_str!("../test/test1.tar");
|
||||
let fs = Ramfs::open(data.as_ptr(), data.bytes().len(), A {}).unwrap();
|
||||
let fs = unsafe { Ramfs::open(data.as_ptr(), data.bytes().len(), A {}).unwrap() };
|
||||
|
||||
let root = fs.root().unwrap();
|
||||
let ioctx = Ioctx::new(root.clone());
|
||||
|
@ -1,47 +0,0 @@
|
||||
use crate::dev::{
|
||||
irq::{IntController, IntSource, IrqContext},
|
||||
Device,
|
||||
};
|
||||
use error::Errno;
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
#[repr(transparent)]
|
||||
pub struct IrqNumber(u32);
|
||||
|
||||
pub(super) struct Bcm283xIntController {}
|
||||
|
||||
impl Device for Bcm283xIntController {
|
||||
fn name(&self) -> &'static str {
|
||||
"BCM283x interrupt controller"
|
||||
}
|
||||
|
||||
unsafe fn enable(&self) -> Result<(), Errno> {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl IntController for Bcm283xIntController {
|
||||
type IrqNumber = IrqNumber;
|
||||
|
||||
fn register_handler(
|
||||
&self,
|
||||
irq: IrqNumber,
|
||||
handler: &'static (dyn IntSource + Sync),
|
||||
) -> Result<(), Errno> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn enable_irq(&self, irq: IrqNumber) -> Result<(), Errno> {
|
||||
todo!()
|
||||
}
|
||||
|
||||
fn handle_pending_irqs<'q>(&'q self, _ic: &IrqContext<'q>) {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
impl Bcm283xIntController {
|
||||
pub const unsafe fn new() -> Self {
|
||||
Self {}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use crate::arch::aarch64::timer::GenericTimer;
|
||||
use crate::dev::{irq::IntController, serial::SerialDevice, timer::TimestampSource, Device};
|
||||
use crate::mem::phys;
|
||||
use error::Errno;
|
||||
|
||||
mod irqchip;
|
||||
use irqchip::Bcm283xIntController;
|
||||
pub use irqchip::IrqNumber;
|
||||
mod uart;
|
||||
use uart::Bcm283xMiniUart;
|
||||
|
||||
pub fn init_board_early() -> Result<(), Errno> {
|
||||
unsafe {
|
||||
MUART.enable()?;
|
||||
|
||||
phys::init_from_region(0x0, 0x30000000);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn init_board() -> Result<(), Errno> {
|
||||
unsafe {
|
||||
INTC.enable()?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn console() -> &'static impl SerialDevice {
|
||||
&MUART
|
||||
}
|
||||
|
||||
/// Returns the timer used as CPU-local periodic IRQ source
|
||||
#[inline]
|
||||
pub fn local_timer() -> &'static impl TimestampSource {
|
||||
&LOCAL_TIMER
|
||||
}
|
||||
|
||||
pub fn intc() -> &'static impl IntController<IrqNumber = IrqNumber> {
|
||||
&INTC
|
||||
}
|
||||
|
||||
static INTC: Bcm283xIntController = unsafe { Bcm283xIntController::new() };
|
||||
static MUART: Bcm283xMiniUart = unsafe { Bcm283xMiniUart::new(0x3F215040) };
|
||||
static LOCAL_TIMER: GenericTimer = GenericTimer {};
|
@ -1,67 +0,0 @@
|
||||
use crate::dev::{serial::SerialDevice, Device};
|
||||
use crate::mem::virt::DeviceMemoryIo;
|
||||
use crate::sync::IrqSafeSpinLock;
|
||||
use crate::util::InitOnce;
|
||||
use error::Errno;
|
||||
use tock_registers::{
|
||||
interfaces::{ReadWriteable, Readable, Writeable},
|
||||
register_bitfields, register_structs,
|
||||
registers::{ReadOnly, ReadWrite, WriteOnly},
|
||||
};
|
||||
|
||||
register_structs! {
|
||||
Regs {
|
||||
(0x00 => IO: ReadWrite<u32>),
|
||||
(0x04 => @END),
|
||||
}
|
||||
}
|
||||
|
||||
pub(super) struct Bcm283xMiniUart {
|
||||
regs: InitOnce<IrqSafeSpinLock<DeviceMemoryIo<Regs>>>,
|
||||
base: usize,
|
||||
}
|
||||
|
||||
impl Device for Bcm283xMiniUart {
|
||||
fn name(&self) -> &'static str {
|
||||
"BCM283x Mini-UART"
|
||||
}
|
||||
|
||||
unsafe fn enable(&self) -> Result<(), Errno> {
|
||||
self.regs.init(IrqSafeSpinLock::new(DeviceMemoryIo::map(
|
||||
self.name(),
|
||||
self.base,
|
||||
1,
|
||||
)?));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
impl SerialDevice for Bcm283xMiniUart {
|
||||
fn send(&self, byte: u8) -> Result<(), Errno> {
|
||||
if !self.regs.is_initialized() {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let regs = self.regs.get().lock();
|
||||
regs.IO.set(byte as u32);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn recv(&self, _blocking: bool) -> Result<u8, Errno> {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
impl Bcm283xMiniUart {
|
||||
/// Constructs an instance of MiniUART device.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
/// Does not perform `base` validation.
|
||||
pub const unsafe fn new(base: usize) -> Self {
|
||||
Self {
|
||||
regs: InitOnce::new(),
|
||||
base,
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user