1
0
Fork 0
usermode
Able 2021-11-21 02:13:50 -06:00
parent 681dc11b1b
commit aea13d428f
9 changed files with 31 additions and 17 deletions

View File

@ -15,12 +15,15 @@ run-args=["-serial", "stdio"]
[dependencies]
spin = "0.5.2"
# linked_list_allocator = "0.9.0"
[dependencies.lazy_static]
features = ["spin_no_std"]
version = "1.0"
# [dependencies.rhai]
# version = "*"
# features = ["no_std"]
# alloc required
# [dependencies.wasmi]
# version = "*"

View File

@ -1,2 +1,3 @@
pub mod graphics;
pub mod nrf52;
pub mod serial;

View File

@ -1,3 +1,4 @@
/// Prints to the host through the serial interface.
#[macro_export]
macro_rules! serial_print {
($($arg:tt)*) => {};

View File

@ -4,7 +4,6 @@ use core::ptr;
pub mod drivers;
pub mod init;
pub mod serial;
use crate::arch::drivers::nrf52::{Level, Pins};
use core::ptr::write_volatile;
global_asm!(include_str!("boot.s"));

View File

@ -33,6 +33,7 @@ use lazy_static::lazy_static;
lazy_static! {
pub static ref SERIAL: Mutex<Serial123> = {
let serial_port = Serial123 {
/// UART port for the serial bus
uart_data: 0x10000000,
};
Mutex::new(serial_port)

View File

@ -1,3 +1,5 @@
//! hi
#![no_std]
// #![deny(warnings)]
#![feature(asm)]

View File

@ -9,20 +9,12 @@ impl Stdout {
}
}
impl core::fmt::Write for Stdout {
#[cfg(target_arch = "arm")]
fn write_str(&mut self, s: &str) -> Result<(), Error> {
use crate::arch::write;
write(s);
Ok(())
}
#[cfg(target_arch = "aarch64")]
fn write_str(&mut self, s: &str) -> Result<(), Error> {
// Don't actually print anything yet lmao
Ok(())
}
#[cfg(target_arch = "x86_64")]
fn write_str(&mut self, s: &str) -> Result<(), Error> {
use crate::kprint;
@ -34,12 +26,6 @@ impl core::fmt::Write for Stdout {
fn write_str(&mut self, s: &str) -> Result<(), Error> {
Ok(())
}
#[cfg(target_arch = "mips")]
fn write_str(&mut self, s: &str) -> Result<(), Error> {
use psp::dprint;
dprint!("{}", s);
Ok(())
}
}
#[macro_export]
macro_rules! print {

0
ableos/src/serial.rs Normal file
View File

View File

@ -11,6 +11,11 @@ enum Command {
#[clap(long, short, arg_enum)]
machine: Option<MachineType>,
},
Doc {
#[clap(long, short, arg_enum)]
machine: Option<MachineType>,
},
}
#[derive(clap::ArgEnum, Debug, Clone)]
@ -34,7 +39,6 @@ fn main() -> anyhow::Result<()> {
};
match machine.unwrap_or(MachineType::X86) {
MachineType::X86 => {
// Used for the x86-64 variant only
xshell::cmd!("cargo run --release").run()?;
}
MachineType::ARM => {
@ -67,6 +71,23 @@ fn main() -> anyhow::Result<()> {
}
}
}
Command::Doc { machine } => {
let _dir = xshell::pushd("./ableos");
match machine.unwrap_or(MachineType::X86) {
MachineType::X86 => {
xshell::cmd!("cargo doc --open").run()?;
}
MachineType::ARM => {
xshell::cmd!("cargo doc --open --target=json_targets/aarch64-ableos.json")
.run()?;
}
MachineType::RISCV => {
xshell::cmd!("cargo doc --open --target=riscv64gc-unknown-none-elf").run()?;
}
}
}
}
Ok(())