Skip to content

Commit baff7d8

Browse files
committed
chore; add github actions workflow
1 parent 3ae0554 commit baff7d8

File tree

9 files changed

+323
-245
lines changed

9 files changed

+323
-245
lines changed

.github/workflows/build.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: test suite
2+
on:
3+
push:
4+
jobs:
5+
test:
6+
runs-on: ubuntu-latest
7+
steps:
8+
- uses: actions/checkout@v4
9+
- uses: dtolnay/rust-toolchain@stable
10+
with:
11+
targets: aarch64-unknown-none
12+
components: clippy, rustfmt
13+
- uses: dtolnay/install-buck2@latest
14+
- run: |
15+
cargo install cargo-deny
16+
cargo deny check
17+
cargo fmt -- --check
18+
cargo clippy
19+
cargo rustc --target aarch64-unknown-none -- -Clink-arg=-Tsrc/image.ld

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,20 @@ edition = "2024"
1010

1111
[dependencies.bevy]
1212
git = "https://github.com/bevyengine/bevy"
13+
version = "0.16.0-dev"
1314
default-features = false
1415
features = ["default_no_std"]
1516

1617
[dependencies.tracing]
1718
git = "https://github.com/bushrat011899/tracing"
19+
version = "0.2.0"
1820
# See https://github.com/tokio-rs/tracing/pull/3199
1921
branch = "portable-atomic"
2022
default-features = false
2123

2224
[dependencies.tracing-subscriber]
2325
git = "https://github.com/bushrat011899/tracing"
26+
version = "0.3.0"
2427
# See https://github.com/tokio-rs/tracing/pull/3199
2528
branch = "portable-atomic"
2629
default-features = false

deny.toml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
[graph]
2+
all-features = true
3+
4+
[advisories]
5+
version = 2
6+
ignore = [
7+
]
8+
9+
[licenses]
10+
version = 2
11+
allow = [
12+
"0BSD",
13+
"Apache-2.0",
14+
"Apache-2.0 WITH LLVM-exception",
15+
"BSD-2-Clause",
16+
"BSD-3-Clause",
17+
"BSL-1.0",
18+
"CC0-1.0",
19+
"ISC",
20+
"MIT",
21+
"MIT-0",
22+
"Unlicense",
23+
"Zlib",
24+
]
25+
26+
exceptions = [
27+
{ name = "unicode-ident", allow = [
28+
"Unicode-DFS-2016",
29+
"Unicode-3.0",
30+
] },
31+
]
32+
33+
[bans]
34+
multiple-versions = "warn"
35+
wildcards = "deny"
36+
# Certain crates that we don't want multiple versions of in the dependency tree
37+
deny = [
38+
{ name = "ahash", deny-multiple-versions = true },
39+
{ name = "android-activity", deny-multiple-versions = true },
40+
{ name = "glam", deny-multiple-versions = true },
41+
{ name = "raw-window-handle", deny-multiple-versions = true },
42+
]
43+
skip = [
44+
]
45+
46+
[sources]
47+
unknown-registry = "deny"
48+
unknown-git = "deny"
49+
allow-registry = ["https://github.com/rust-lang/crates.io-index"]
50+
allow-git = ["https://github.com/bevyengine/bevy", "https://github.com/bushrat011899/tracing"]
51+
52+
# thiserror is the preferred way to derive error types
53+
[[bans.features]]
54+
crate = "derive_more"
55+
deny = ["error"]

src/exceptions.rs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,63 +14,63 @@
1414

1515
use arm_gic::gicv3::GicV3;
1616
use log::{error, info, trace};
17-
use smccc::psci::system_off;
1817
use smccc::Hvc;
18+
use smccc::psci::system_off;
1919

2020
// SAFETY: There is no other global function of this name.
2121
#[unsafe(no_mangle)]
2222
extern "C" fn sync_exception_current(_elr: u64, _spsr: u64) {
23-
error!("sync_exception_current");
24-
system_off::<Hvc>().unwrap();
23+
error!("sync_exception_current");
24+
system_off::<Hvc>().unwrap();
2525
}
2626

2727
// SAFETY: There is no other global function of this name.
2828
#[unsafe(no_mangle)]
2929
extern "C" fn irq_current(_elr: u64, _spsr: u64) {
30-
trace!("irq_current");
31-
let intid =
32-
GicV3::get_and_acknowledge_interrupt().expect("No pending interrupt");
33-
info!("IRQ {intid:?}");
30+
trace!("irq_current");
31+
let intid =
32+
GicV3::get_and_acknowledge_interrupt().expect("No pending interrupt");
33+
info!("IRQ {intid:?}");
3434
}
3535

3636
// SAFETY: There is no other global function of this name.
3737
#[unsafe(no_mangle)]
3838
extern "C" fn fiq_current(_elr: u64, _spsr: u64) {
39-
error!("fiq_current");
40-
system_off::<Hvc>().unwrap();
39+
error!("fiq_current");
40+
system_off::<Hvc>().unwrap();
4141
}
4242

4343
// SAFETY: There is no other global function of this name.
4444
#[unsafe(no_mangle)]
4545
extern "C" fn serr_current(_elr: u64, _spsr: u64) {
46-
error!("serr_current");
47-
system_off::<Hvc>().unwrap();
46+
error!("serr_current");
47+
system_off::<Hvc>().unwrap();
4848
}
4949

5050
// SAFETY: There is no other global function of this name.
5151
#[unsafe(no_mangle)]
5252
extern "C" fn sync_lower(_elr: u64, _spsr: u64) {
53-
error!("sync_lower");
54-
system_off::<Hvc>().unwrap();
53+
error!("sync_lower");
54+
system_off::<Hvc>().unwrap();
5555
}
5656

5757
// SAFETY: There is no other global function of this name.
5858
#[unsafe(no_mangle)]
5959
extern "C" fn irq_lower(_elr: u64, _spsr: u64) {
60-
error!("irq_lower");
61-
system_off::<Hvc>().unwrap();
60+
error!("irq_lower");
61+
system_off::<Hvc>().unwrap();
6262
}
6363

6464
// SAFETY: There is no other global function of this name.
6565
#[unsafe(no_mangle)]
6666
extern "C" fn fiq_lower(_elr: u64, _spsr: u64) {
67-
error!("fiq_lower");
68-
system_off::<Hvc>().unwrap();
67+
error!("fiq_lower");
68+
system_off::<Hvc>().unwrap();
6969
}
7070

7171
// SAFETY: There is no other global function of this name.
7272
#[unsafe(no_mangle)]
7373
extern "C" fn serr_lower(_elr: u64, _spsr: u64) {
74-
error!("serr_lower");
75-
system_off::<Hvc>().unwrap();
74+
error!("serr_lower");
75+
system_off::<Hvc>().unwrap();
7676
}

src/logger.rs

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,37 @@ use core::fmt::Write;
1818
use log::{LevelFilter, Log, Metadata, Record, SetLoggerError};
1919
use spin::mutex::SpinMutex;
2020

21-
static LOGGER: Logger = Logger { uart: SpinMutex::new(None) };
21+
static LOGGER: Logger = Logger {
22+
uart: SpinMutex::new(None),
23+
};
2224

2325
struct Logger {
24-
uart: SpinMutex<Option<Uart>>,
26+
uart: SpinMutex<Option<Uart>>,
2527
}
2628

2729
impl Log for Logger {
28-
fn enabled(&self, _metadata: &Metadata) -> bool {
29-
true
30-
}
31-
32-
fn log(&self, record: &Record) {
33-
writeln!(
34-
self.uart.lock().as_mut().unwrap(),
35-
"[{}] {}",
36-
record.level(),
37-
record.args()
38-
)
39-
.unwrap();
40-
}
41-
42-
fn flush(&self) {}
30+
fn enabled(&self, _metadata: &Metadata) -> bool {
31+
true
32+
}
33+
34+
fn log(&self, record: &Record) {
35+
writeln!(
36+
self.uart.lock().as_mut().unwrap(),
37+
"[{}] {}",
38+
record.level(),
39+
record.args()
40+
)
41+
.unwrap();
42+
}
43+
44+
fn flush(&self) {}
4345
}
4446

4547
/// Initialises UART logger.
4648
pub fn init(uart: Uart, max_level: LevelFilter) -> Result<(), SetLoggerError> {
47-
LOGGER.uart.lock().replace(uart);
49+
LOGGER.uart.lock().replace(uart);
4850

49-
log::set_logger(&LOGGER)?;
50-
log::set_max_level(max_level);
51-
Ok(())
51+
log::set_logger(&LOGGER)?;
52+
log::set_max_level(max_level);
53+
Ok(())
5254
}

src/main.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ mod pl011;
88
mod pl031;
99
mod task;
1010

11+
use core::panic::PanicInfo;
12+
1113
use crate::pl011::Uart;
12-
use crate::pl031::Rtc;
1314
use arm_gic::gicv3::GicV3;
1415
use arm_gic::{IntId, Trigger, irq_enable};
1516
use bevy::prelude::Commands;
@@ -19,8 +20,6 @@ use bevy::{
1920
prelude::{PluginGroup, Startup},
2021
};
2122
use buddy_system_allocator::LockedHeap;
22-
use chrono::{TimeZone, Utc};
23-
use core::panic::PanicInfo;
2423
use log::{LevelFilter, error, info};
2524
use smccc::Hvc;
2625
use smccc::psci::system_off;
@@ -34,8 +33,6 @@ const GICR_BASE_ADDRESS: *mut u64 = 0x80A_0000 as _;
3433
const PL011_BASE_ADDRESS: *mut u32 = 0x900_0000 as _;
3534
// ANCHOR_END: imports
3635

37-
/// Base address of the PL031 RTC.
38-
const PL031_BASE_ADDRESS: *mut u32 = 0x901_0000 as _;
3936
/// The IRQ used by the PL031 RTC.
4037
const PL031_IRQ: IntId = IntId::spi(2);
4138

@@ -47,7 +44,7 @@ static mut HEAP: [u8; HEAP_SIZE] = [0; HEAP_SIZE];
4744

4845
// SAFETY: There is no other global function of this name.
4946
#[unsafe(no_mangle)]
50-
extern "C" fn main(x0: u64, x1: u64, x2: u64, x3: u64) {
47+
extern "C" fn main(_x0: u64, _x1: u64, _x2: u64, _x3: u64) {
5148
// SAFETY: `HEAP` is only used here and `entry` is only called once.
5249
unsafe {
5350
// Give the allocator some memory to allocate.

0 commit comments

Comments
 (0)