Skip to content

Commit e4ac738

Browse files
authored
Merge pull request #25 from bugadani/cleanup
Clean up
2 parents b4fc6cc + 322d929 commit e4ac738

File tree

2 files changed

+85
-66
lines changed

2 files changed

+85
-66
lines changed

src/api_xtensa.rs

Lines changed: 84 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use core::arch::global_asm;
2-
31
// Probe-rs doesn't know how to call a function on the Xtensa architecture. Due to the windowed
42
// ABI, just jumping to the function address won't work. Instead, we need to use a call<N>
53
// instruction, which will set up the window increment and then jump to the function address.
@@ -19,69 +17,93 @@ static STACK_PTR: u32 = 0x3FFD_F000;
1917
// End of SRAM1 - DATA_CACHE_SIZE
2018
static STACK_PTR: u32 = 0x3FCD_0000;
2119

22-
global_asm!(
23-
"
24-
Init:
25-
.global Init_impl
26-
l32r a1, STACK_PTR
27-
mov.n a6, a2
28-
mov.n a7, a3
29-
mov.n a8, a4
30-
call4 Init_impl
31-
mov.n a2, a6
32-
break 1, 15
20+
#[unsafe(naked)]
21+
#[unsafe(no_mangle)]
22+
extern "C" fn Init() {
23+
core::arch::naked_asm!(
24+
"l32r a1, STACK_PTR",
25+
"mov.n a6, a2",
26+
"mov.n a7, a3",
27+
"mov.n a8, a4",
28+
"call4 Init_impl",
29+
"mov.n a2, a6",
30+
"break 1, 15",
31+
);
32+
}
3333

34-
EraseSector:
35-
.global EraseSector_impl
36-
l32r a1, STACK_PTR
37-
mov.n a6, a2
38-
call4 EraseSector_impl
39-
mov.n a2, a6
40-
break 1, 15
34+
#[unsafe(naked)]
35+
#[unsafe(no_mangle)]
36+
extern "C" fn EraseSector() {
37+
core::arch::naked_asm!(
38+
"l32r a1, STACK_PTR",
39+
"mov.n a6, a2",
40+
"call4 EraseSector_impl",
41+
"mov.n a2, a6",
42+
"break 1, 15",
43+
);
44+
}
4145

42-
EraseChip:
43-
.global EraseChip_impl
44-
l32r a1, STACK_PTR
45-
call4 EraseChip_impl
46-
mov.n a2, a6
47-
break 1, 15
46+
#[unsafe(naked)]
47+
#[unsafe(no_mangle)]
48+
extern "C" fn EraseChip() {
49+
core::arch::naked_asm!(
50+
"l32r a1, STACK_PTR",
51+
"call4 EraseChip_impl",
52+
"mov.n a2, a6",
53+
"break 1, 15"
54+
);
55+
}
4856

49-
ProgramPage:
50-
.global ProgramPage_impl
51-
l32r a1, STACK_PTR
52-
mov.n a6, a2
53-
mov.n a7, a3
54-
mov.n a8, a4
55-
call4 ProgramPage_impl
56-
mov.n a2, a6
57-
break 1, 15
57+
#[unsafe(naked)]
58+
#[unsafe(no_mangle)]
59+
extern "C" fn ProgramPage() {
60+
core::arch::naked_asm!(
61+
"l32r a1, STACK_PTR",
62+
"mov.n a6, a2",
63+
"mov.n a7, a3",
64+
"mov.n a8, a4",
65+
"call4 ProgramPage_impl",
66+
"mov.n a2, a6",
67+
"break 1, 15",
68+
);
69+
}
5870

59-
Verify:
60-
.global Verify_impl
61-
l32r a1, STACK_PTR
62-
mov.n a6, a2
63-
mov.n a7, a3
64-
mov.n a8, a4
65-
call4 Verify_impl
66-
mov.n a2, a6
67-
break 1, 15
71+
#[unsafe(naked)]
72+
#[unsafe(no_mangle)]
73+
extern "C" fn Verify() {
74+
core::arch::naked_asm!(
75+
"l32r a1, STACK_PTR",
76+
"mov.n a6, a2",
77+
"mov.n a7, a3",
78+
"mov.n a8, a4",
79+
"call4 Verify_impl",
80+
"mov.n a2, a6",
81+
"break 1, 15",
82+
);
83+
}
6884

69-
ReadFlash:
70-
.global ReadFlash_impl
71-
l32r a1, STACK_PTR
72-
mov.n a6, a2
73-
mov.n a7, a3
74-
mov.n a8, a4
75-
call4 ReadFlash_impl
76-
mov.n a2, a6
77-
break 1, 15
85+
#[unsafe(naked)]
86+
#[unsafe(no_mangle)]
87+
extern "C" fn ReadFlash() {
88+
core::arch::naked_asm!(
89+
"l32r a1, STACK_PTR",
90+
"mov.n a6, a2",
91+
"mov.n a7, a3",
92+
"mov.n a8, a4",
93+
"call4 ReadFlash_impl",
94+
"mov.n a2, a6",
95+
"break 1, 15",
96+
);
97+
}
7898

79-
UnInit:
80-
.global UnInit_impl
81-
l32r a1, STACK_PTR
82-
mov.n a6, a2
83-
call4 UnInit_impl
84-
mov.n a2, a6
85-
break 1, 15
86-
"
87-
);
99+
#[unsafe(naked)]
100+
#[unsafe(no_mangle)]
101+
extern "C" fn UnInit() {
102+
core::arch::naked_asm!(
103+
"l32r a1, STACK_PTR",
104+
"mov.n a6, a2",
105+
"call4 UnInit_impl",
106+
"mov.n a2, a6",
107+
"break 1, 15",
108+
);
109+
}

src/main.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
#![no_std]
22
#![no_main]
3-
#![cfg_attr(
4-
target_arch = "xtensa",
5-
feature(asm_experimental_arch, naked_functions)
6-
)]
3+
#![cfg_attr(target_arch = "xtensa", feature(asm_experimental_arch))]
74

85
// Target memory configuration
96

0 commit comments

Comments
 (0)