Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/mps3-an536/rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[toolchain]
channel = "nightly-2025-10-29"
channel = "nightly-2025-12-01"
targets = [
"armv8r-none-eabihf",
]
Expand Down
2 changes: 1 addition & 1 deletion examples/mps3-an536/src/bin/abt-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ unsafe fn data_abort_handler(addr: usize) -> usize {
enable_alignment_check();

// note the fault isn't at the start of the function
let expect_fault_at = unaligned_from_a32 as usize + 8;
let expect_fault_at = unaligned_from_a32 as unsafe extern "C" fn() as usize + 8;

if addr == expect_fault_at {
println!("caught unaligned_from_a32");
Expand Down
2 changes: 1 addition & 1 deletion examples/mps3-an536/src/bin/abt-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ unsafe fn data_abort_handler(addr: usize) -> usize {
enable_alignment_check();

// note the fault isn't at the start of the function
let expect_fault_at = unaligned_from_t32 as usize + 5;
let expect_fault_at = unaligned_from_t32 as unsafe extern "C" fn() as usize + 5;

if addr == expect_fault_at {
println!("caught unaligned_from_t32");
Expand Down
4 changes: 2 additions & 2 deletions examples/mps3-an536/src/bin/prefetch-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,12 +63,12 @@ unsafe fn prefetch_abort_handler(addr: usize) -> usize {
let ifar = Ifar::read();
println!("IFAR (Faulting Address Register): {:?}", ifar);

if addr == bkpt_from_a32 as usize {
if addr == bkpt_from_a32 as unsafe extern "C" fn() as usize {
println!("caught bkpt_from_a32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, bkpt_from_a32 as usize
addr, bkpt_from_a32 as unsafe extern "C" fn() as usize
);
}

Expand Down
4 changes: 2 additions & 2 deletions examples/mps3-an536/src/bin/prefetch-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,15 +63,15 @@ unsafe fn prefetch_abort_handler(addr: usize) -> usize {
let ifar = Ifar::read();
println!("IFAR (Faulting Address Register): {:?}", ifar);

if (addr + 1) == bkpt_from_t32 as usize {
if (addr + 1) == bkpt_from_t32 as unsafe extern "C" fn() as usize {
// note that thumb functions have their LSB set, despite always being a
// multiple of two - that's how the CPU knows they are written in T32
// machine code.
println!("caught bkpt_from_t32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, bkpt_from_t32 as usize
addr, bkpt_from_t32 as unsafe extern "C" fn() as usize
);
}

Expand Down
4 changes: 2 additions & 2 deletions examples/mps3-an536/src/bin/undef-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ fn prefetch_abort_handler(_addr: usize) -> ! {
unsafe fn undefined_handler(addr: usize) -> usize {
println!("undefined abort occurred");

if addr == udf_from_a32 as usize {
if addr == udf_from_a32 as unsafe extern "C" fn() as usize {
println!("caught udf_from_a32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, udf_from_a32 as usize
addr, udf_from_a32 as unsafe extern "C" fn() as usize
);
}

Expand Down
4 changes: 2 additions & 2 deletions examples/mps3-an536/src/bin/undef-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ fn prefetch_abort_handler(_addr: usize) -> ! {
unsafe fn undefined_handler(addr: usize) -> usize {
println!("undefined abort occurred");

if (addr + 1) == udf_from_t32 as usize {
if (addr + 1) == udf_from_t32 as unsafe extern "C" fn() as usize {
// note that thumb functions have their LSB set, despite always being a
// multiple of two - that's how the CPU knows they are written in T32
// machine code.
println!("caught udf_from_t32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, udf_from_t32 as usize
addr, udf_from_t32 as unsafe extern "C" fn() as usize
);
}

Expand Down
2 changes: 1 addition & 1 deletion examples/versatileab/rust-toolchain.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[toolchain]
channel = "nightly-2025-10-29"
channel = "nightly-2025-12-01"
targets = [
"armv7r-none-eabi",
"armv7r-none-eabihf",
Expand Down
2 changes: 1 addition & 1 deletion examples/versatileab/src/bin/abt-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ unsafe fn data_abort_handler(addr: usize) -> usize {
enable_alignment_check();

// note the fault isn't at the start of the function
let expect_fault_at = unaligned_from_a32 as usize + 8;
let expect_fault_at = unaligned_from_a32 as unsafe extern "C" fn() as usize + 8;

if addr == expect_fault_at {
println!("caught unaligned_from_a32");
Expand Down
2 changes: 1 addition & 1 deletion examples/versatileab/src/bin/abt-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ unsafe fn data_abort_handler(addr: usize) -> usize {
enable_alignment_check();

// note the fault isn't at the start of the function
let expect_fault_at = unaligned_from_t32 as usize + 3;
let expect_fault_at = unaligned_from_t32 as unsafe extern "C" fn() as usize + 3;

if addr == expect_fault_at {
println!("caught unaligned_from_t32");
Expand Down
4 changes: 2 additions & 2 deletions examples/versatileab/src/bin/prefetch-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,12 +68,12 @@ unsafe fn prefetch_abort_handler(addr: usize) -> usize {
let ifar = Ifar::read();
println!("IFAR (Faulting Address Register): {:?}", ifar);

if addr == bkpt_from_a32 as usize {
if addr == bkpt_from_a32 as unsafe extern "C" fn() as usize {
println!("caught bkpt_from_a32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, bkpt_from_a32 as usize
addr, bkpt_from_a32 as unsafe extern "C" fn() as usize
);
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/versatileab/src/bin/prefetch-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,15 +68,15 @@ unsafe fn prefetch_abort_handler(addr: usize) -> usize {
let ifar = Ifar::read();
println!("IFAR (Faulting Address Register): {:?}", ifar);

if (addr + 1) == bkpt_from_t32 as usize {
if (addr + 1) == bkpt_from_t32 as unsafe extern "C" fn() as usize {
// note that thumb functions have their LSB set, despite always being a
// multiple of two - that's how the CPU knows they are written in T32
// machine code.
println!("caught bkpt_from_t32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, bkpt_from_t32 as usize
addr, bkpt_from_t32 as unsafe extern "C" fn() as usize
);
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/versatileab/src/bin/undef-exception-a32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ fn prefetch_abort_handler(_addr: usize) -> ! {
unsafe fn undefined_handler(addr: usize) -> usize {
println!("undefined abort occurred");

if addr == udf_from_a32 as usize {
if addr == udf_from_a32 as unsafe extern "C" fn() as usize {
println!("caught udf_from_a32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, udf_from_a32 as usize
addr, udf_from_a32 as unsafe extern "C" fn() as usize
);
}

Expand Down
4 changes: 2 additions & 2 deletions examples/versatileab/src/bin/undef-exception-t32.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,15 @@ fn prefetch_abort_handler(_addr: usize) -> ! {
unsafe fn undefined_handler(addr: usize) -> usize {
println!("undefined abort occurred");

if (addr + 1) == udf_from_t32 as usize {
if (addr + 1) == udf_from_t32 as unsafe extern "C" fn() as usize {
// note that thumb functions have their LSB set, despite always being a
// multiple of two - that's how the CPU knows they are written in T32
// machine code.
println!("caught udf_from_t32");
} else {
println!(
"Bad fault address {:08x} is not {:08x}",
addr, udf_from_t32 as usize
addr, udf_from_t32 as unsafe extern "C" fn() as usize
);
}

Expand Down