forked from koniifer/ableos
Removing deprecated platforms
This commit is contained in:
parent
b6ba831ea0
commit
681dc11b1b
|
@ -1,52 +0,0 @@
|
|||
// AArch32 mode
|
||||
|
||||
// To keep this in the first portion of the binary.
|
||||
.section ".text.boot"
|
||||
|
||||
// Make _start global.
|
||||
.globl _start
|
||||
|
||||
.org 0x8000
|
||||
// Entry point for the kernel.
|
||||
// r15 -> should begin execution at 0x8000.
|
||||
// r0 -> 0x00000000
|
||||
// r1 -> 0x00000C42 - machine id
|
||||
// r2 -> 0x00000100 - start of ATAGS
|
||||
// preserve these registers as argument for kernel_main
|
||||
_start:
|
||||
// Shut off extra cores
|
||||
mrc p15, 0, r5, c0, c0, 5
|
||||
and r5, r5, #3
|
||||
cmp r5, #0
|
||||
bne halt
|
||||
|
||||
// Setup the stack.
|
||||
ldr r5, =_start
|
||||
mov sp, r5
|
||||
|
||||
// Clear out bss.
|
||||
ldr r4, =__bss_start
|
||||
ldr r9, =__bss_end
|
||||
mov r5, #0
|
||||
mov r6, #0
|
||||
mov r7, #0
|
||||
mov r8, #0
|
||||
b 2f
|
||||
|
||||
1:
|
||||
// store multiple at r4.
|
||||
stmia r4!, {r5-r8}
|
||||
|
||||
// If we are still below bss_end, loop.
|
||||
2:
|
||||
cmp r4, r9
|
||||
blo 1b
|
||||
|
||||
// Call kernel_main
|
||||
ldr r3, =kernel_main
|
||||
blx r3
|
||||
|
||||
// halt
|
||||
halt:
|
||||
wfe
|
||||
b halt
|
|
@ -1,7 +0,0 @@
|
|||
arm-none-eabi-gcc -mcpu=cortex-a7 -fpic -ffreestanding -c src/arch/aarch32/boot.s -o boot.o
|
||||
mv src/main.rs src/main.rs.pass
|
||||
cargo build --release --target json_targets/aarch32-ableos.json
|
||||
arm-none-eabi-gcc -T src/arch/aarch32/linker.ld -o ableos.elf -ffreestanding -O2 -nostdlib boot.o \
|
||||
target/aarch32-ableos/release/libableos.rlib
|
||||
mv src/main.rs.pass src/main.rs
|
||||
rm boot.o
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1 +0,0 @@
|
|||
pub mod graphics;
|
|
@ -1,4 +0,0 @@
|
|||
use super::write;
|
||||
pub fn init() {
|
||||
write("booted on arm :>\n");
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
ENTRY(_start)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
/* Starts at LOADER_ADDR. */
|
||||
. = 0x80000;
|
||||
__start = .;
|
||||
__text_start = .;
|
||||
.text :
|
||||
{
|
||||
KEEP(*(.text.boot))
|
||||
*(.text)
|
||||
}
|
||||
. = ALIGN(4096); /* align to page size */
|
||||
__text_end = .;
|
||||
|
||||
__rodata_start = .;
|
||||
.rodata :
|
||||
{
|
||||
*(.rodata)
|
||||
}
|
||||
. = ALIGN(4096); /* align to page size */
|
||||
__rodata_end = .;
|
||||
|
||||
__data_start = .;
|
||||
.data :
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
. = ALIGN(4096); /* align to page size */
|
||||
__data_end = .;
|
||||
|
||||
__bss_start = .;
|
||||
.bss :
|
||||
{
|
||||
bss = .;
|
||||
*(.bss)
|
||||
}
|
||||
. = ALIGN(4096); /* align to page size */
|
||||
__bss_end = .;
|
||||
__bss_size = __bss_end - __bss_start;
|
||||
__end = .;
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
const MMIO_BASE: u32 = 0x3F00_0000;
|
||||
const VIDEOCORE_MBOX: u32 = MMIO_BASE + 0xB880;
|
|
@ -1,38 +0,0 @@
|
|||
#![allow(warnings)]
|
||||
pub const ARCH: &'static str = "aarch32";
|
||||
use core::intrinsics::{volatile_load, volatile_store};
|
||||
pub mod drivers;
|
||||
pub mod init;
|
||||
pub mod mbox;
|
||||
// raspi2 and raspi3 have peripheral base address 0x3F000000,
|
||||
// b ut raspi1 has peripheral base address 0x20000000. Ensure
|
||||
// you are using the correct peripheral address for your
|
||||
// hardware.
|
||||
const UART_DR: u32 = 0x3F201000;
|
||||
const UART_FR: u32 = 0x3F201018;
|
||||
pub fn mmio_write(reg: u32, val: u32) {
|
||||
unsafe { volatile_store(reg as *mut u32, val) }
|
||||
}
|
||||
pub fn mmio_read(reg: u32) -> u32 {
|
||||
unsafe { volatile_load(reg as *const u32) }
|
||||
}
|
||||
pub fn transmit_fifo_full() -> bool {
|
||||
mmio_read(UART_FR) & (1 << 5) > 0
|
||||
}
|
||||
pub fn receive_fifo_empty() -> bool {
|
||||
mmio_read(UART_FR) & (1 << 4) > 0
|
||||
}
|
||||
pub fn writec(c: u8) {
|
||||
while transmit_fifo_full() {}
|
||||
mmio_write(UART_DR, c as u32);
|
||||
}
|
||||
pub fn getc() -> u8 {
|
||||
while receive_fifo_empty() {}
|
||||
mmio_read(UART_DR) as u8
|
||||
}
|
||||
pub fn write(msg: &str) {
|
||||
for c in msg.chars() {
|
||||
writec(c as u8)
|
||||
}
|
||||
}
|
||||
pub fn shutdown() {}
|
|
@ -1,3 +0,0 @@
|
|||
sh src/arch/aarch32/build.sh && \
|
||||
qemu-system-arm -M raspi2 -kernel ableos.elf --serial stdio && \
|
||||
rm ableos.elf
|
|
@ -1 +0,0 @@
|
|||
|
|
@ -1 +0,0 @@
|
|||
pub mod graphics;
|
|
@ -1,2 +0,0 @@
|
|||
use super::*;
|
||||
pub fn init() {}
|
|
@ -1,47 +0,0 @@
|
|||
#![no_std]
|
||||
#![no_main]
|
||||
pub const ARCH: &'static str = "mipsr4000";
|
||||
pub mod drivers;
|
||||
static mut LIST: psp::Align16<[u32; 0x40000]> = psp::Align16([0; 0x40000]);
|
||||
// Create a module named "sample_module" with version 1.0
|
||||
psp::module!("ableos", 1, 0);
|
||||
fn psp_main() {
|
||||
// println!("AbleOS booted on PSP");
|
||||
// todo
|
||||
// println!("{}", crate::experiments::systeminfo::format_system_info());
|
||||
// gl_basic();
|
||||
println!("{}", crate::time::kilotime::Kilosecond::from_sec(23944));
|
||||
let mut second = timer_update().seconds;
|
||||
loop {
|
||||
/*
|
||||
{
|
||||
let time = timer_update();
|
||||
// FIXME: this is a little broken
|
||||
if (second) == time.seconds {
|
||||
if second == 59 {
|
||||
second = 0;
|
||||
}
|
||||
// time
|
||||
print!(
|
||||
"{:?}/{:?}/{:?} {:02}:{:02}:{:02} UTC\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n",
|
||||
time.year, time.month, time.day, time.hour, time.minutes, time.seconds
|
||||
);
|
||||
second += 1;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
pub fn shutdown() {}
|
||||
mod simple_graphics;
|
||||
use simple_graphics::gl_basic;
|
||||
mod timer;
|
||||
use crate::arch::timer::timer_update;
|
||||
use core::ffi::c_void;
|
||||
use psp::{
|
||||
sys::{self, DisplayPixelFormat, GuState, TexturePixelFormat},
|
||||
vram_alloc::get_vram_allocator,
|
||||
{BUF_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH},
|
||||
};
|
||||
pub mod init;
|
||||
use crate::println;
|
|
@ -1,27 +0,0 @@
|
|||
use crate::arch::*;
|
||||
/// used as a very basic bare minimum gl example
|
||||
pub fn gl_basic() {
|
||||
unsafe {
|
||||
let mut allocator = get_vram_allocator().unwrap();
|
||||
let fbp0 = allocator
|
||||
.alloc_texture_pixels(BUF_WIDTH, SCREEN_HEIGHT, TexturePixelFormat::Psm8888)
|
||||
.as_mut_ptr_from_zero();
|
||||
sys::sceGuInit();
|
||||
sys::sceGuStart(
|
||||
sys::GuContextType::Direct,
|
||||
&mut LIST as *mut _ as *mut c_void,
|
||||
);
|
||||
sys::sceGuDrawBuffer(DisplayPixelFormat::Psm8888, fbp0 as _, BUF_WIDTH as i32);
|
||||
sys::sceGuDebugPrint(
|
||||
100,
|
||||
100,
|
||||
0xff0000ff,
|
||||
b"hi there from ableOS PSP graphics\0" as *const u8,
|
||||
);
|
||||
sys::sceGuDebugFlush();
|
||||
sys::sceGuFinish();
|
||||
sys::sceGuSync(sys::GuSyncMode::Finish, sys::GuSyncBehavior::Wait);
|
||||
sys::sceDisplayWaitVblankStart();
|
||||
sys::sceGuDisplay(true);
|
||||
}
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
pub fn timer_update() -> ScePspDateTime {
|
||||
unsafe {
|
||||
let mut tick = 0;
|
||||
psp::sys::sceRtcGetCurrentTick(&mut tick);
|
||||
// Convert the tick to an instance of `ScePspDateTime`
|
||||
let mut date = MaybeUninit::uninit();
|
||||
psp::sys::sceRtcSetTick(date.as_mut_ptr(), &tick);
|
||||
let date = date.assume_init();
|
||||
return date;
|
||||
}
|
||||
}
|
||||
use core::mem::MaybeUninit;
|
||||
use psp::sys::ScePspDateTime;
|
Loading…
Reference in a new issue