misc: remove rpi3 target (for now)

This commit is contained in:
Mark Poliakov 2021-10-26 13:46:12 +03:00
parent 59c30c32b4
commit 771408498d
8 changed files with 1 additions and 230 deletions

View File

@ -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)

View File

@ -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" ]
}
}

View File

@ -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.

View File

@ -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());

View File

@ -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 {}
}
}

View File

@ -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 {};

View File

@ -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,
}
}
}