Skip to content

Commit 0e7e4cc

Browse files
authored
Merge pull request #527 from Patryk27/fix_avr_floats
2 parents 96fd4ec + ec3b202 commit 0e7e4cc

File tree

2 files changed

+19
-6
lines changed

2 files changed

+19
-6
lines changed

src/float/cmp.rs

+14
Original file line numberDiff line numberDiff line change
@@ -99,60 +99,74 @@ fn unord<F: Float>(a: F, b: F) -> bool {
9999
}
100100

101101
intrinsics! {
102+
#[avr_skip]
102103
pub extern "C" fn __lesf2(a: f32, b: f32) -> i32 {
103104
cmp(a, b).to_le_abi()
104105
}
105106

107+
#[avr_skip]
106108
pub extern "C" fn __gesf2(a: f32, b: f32) -> i32 {
107109
cmp(a, b).to_ge_abi()
108110
}
109111

112+
#[avr_skip]
110113
#[arm_aeabi_alias = __aeabi_fcmpun]
111114
pub extern "C" fn __unordsf2(a: f32, b: f32) -> i32 {
112115
unord(a, b) as i32
113116
}
114117

118+
#[avr_skip]
115119
pub extern "C" fn __eqsf2(a: f32, b: f32) -> i32 {
116120
cmp(a, b).to_le_abi()
117121
}
118122

123+
#[avr_skip]
119124
pub extern "C" fn __ltsf2(a: f32, b: f32) -> i32 {
120125
cmp(a, b).to_le_abi()
121126
}
122127

128+
#[avr_skip]
123129
pub extern "C" fn __nesf2(a: f32, b: f32) -> i32 {
124130
cmp(a, b).to_le_abi()
125131
}
126132

133+
#[avr_skip]
127134
pub extern "C" fn __gtsf2(a: f32, b: f32) -> i32 {
128135
cmp(a, b).to_ge_abi()
129136
}
130137

138+
#[avr_skip]
131139
pub extern "C" fn __ledf2(a: f64, b: f64) -> i32 {
132140
cmp(a, b).to_le_abi()
133141
}
134142

143+
#[avr_skip]
135144
pub extern "C" fn __gedf2(a: f64, b: f64) -> i32 {
136145
cmp(a, b).to_ge_abi()
137146
}
138147

148+
#[avr_skip]
139149
#[arm_aeabi_alias = __aeabi_dcmpun]
140150
pub extern "C" fn __unorddf2(a: f64, b: f64) -> i32 {
141151
unord(a, b) as i32
142152
}
143153

154+
#[avr_skip]
144155
pub extern "C" fn __eqdf2(a: f64, b: f64) -> i32 {
145156
cmp(a, b).to_le_abi()
146157
}
147158

159+
#[avr_skip]
148160
pub extern "C" fn __ltdf2(a: f64, b: f64) -> i32 {
149161
cmp(a, b).to_le_abi()
150162
}
151163

164+
#[avr_skip]
152165
pub extern "C" fn __nedf2(a: f64, b: f64) -> i32 {
153166
cmp(a, b).to_le_abi()
154167
}
155168

169+
#[avr_skip]
156170
pub extern "C" fn __gtdf2(a: f64, b: f64) -> i32 {
157171
cmp(a, b).to_ge_abi()
158172
}

src/macros.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -437,12 +437,11 @@ macro_rules! intrinsics {
437437
intrinsics!($($rest)*);
438438
);
439439

440-
// For division and modulo, AVR uses a custom calling convention¹ that does
441-
// not match our definitions here. Ideally we would just use hand-written
442-
// naked functions, but that's quite a lot of code to port² - so for the
443-
// time being we are just ignoring the problematic functions, letting
444-
// avr-gcc (which is required to compile to AVR anyway) link them from
445-
// libgcc.
440+
// For some intrinsics, AVR uses a custom calling convention¹ that does not
441+
// match our definitions here. Ideally we would just use hand-written naked
442+
// functions, but that's quite a lot of code to port² - so for the time
443+
// being we are just ignoring the problematic functions, letting avr-gcc
444+
// (which is required to compile to AVR anyway) link them from libgcc.
446445
//
447446
// ¹ https://gcc.gnu.org/wiki/avr-gcc (see "Exceptions to the Calling
448447
// Convention")

0 commit comments

Comments
 (0)