2 * SPDX-License-Identifier: BSD-2-Clause
4 * Copyright (c) 2021 Warner Losh
5 * Copyright (c) 2023 Stormshield
6 * Copyright (c) 2023 Klara, Inc.
9 #include <sys/syscall.h>
11 #define STDOUT_FILENO 1
12 #define SWP_MAGIC 0xffc0
13 #define SWPB_MAGIC 0xc0c0
25 /* r4 is our failed test counter */
27 /* r6 is our current teset counter */
30 movw r0, :lower16:.L.testheader
31 movt r0, :upper16:.L.testheader
32 ldr r1, =(.L.testheaderEnd - .L.testheader - 1)
42 /* Returned 0 (bad) or 1 (ok) */
54 /* Don't care about the return of the second one, just print */
56 movw r0, :lower16:.L.eq
57 movt r0, :upper16:.L.eq
58 ldr r1, =(.L.eqEnd - .L.eq - 1)
60 add r6, r6, #1 /* Next test */
72 /* Returned 0 (bad) or 1 (ok) */
84 /* Don't care about the return of the second one, just print */
86 movw r0, :lower16:.L.cs
87 movt r0, :upper16:.L.cs
88 ldr r1, =(.L.csEnd - .L.cs - 1)
90 add r6, r6, #1 /* Next test */
101 /* Returned 0 (bad) or 1 (ok) */
113 /* Don't care about the return of the second one, just print */
115 movw r0, :lower16:.L.mi
116 movt r0, :upper16:.L.mi
117 ldr r1, =(.L.miEnd - .L.mi - 1)
119 add r6, r6, #1 /* Next test */
131 /* Returned 0 (bad) or 1 (ok) */
143 /* Don't care about the return of the second one, just print */
145 movw r0, :lower16:.L.vs
146 movt r0, :upper16:.L.vs
147 ldr r1, =(.L.vsEnd - .L.vs - 1)
149 add r6, r6, #1 /* Next test */
160 /* Returned 0 (bad) or 1 (ok) */
173 /* Don't care about the return of the second one, just print */
175 movw r0, :lower16:.L.hi
176 movt r0, :upper16:.L.hi
177 ldr r1, =(.L.hiEnd - .L.hi - 1)
179 add r6, r6, #1 /* Next test */
189 /* Returned 0 (bad) or 1 (ok) */
202 /* Don't care about the return of the second one, just print */
204 movw r0, :lower16:.L.ge
205 movt r0, :upper16:.L.ge
206 ldr r1, =(.L.geEnd - .L.ge - 1)
208 add r6, r6, #1 /* Next test */
219 /* Returned 0 (bad) or 1 (ok) */
232 /* Don't care about the return of the second one, just print */
234 movw r0, :lower16:.L.gt
235 movt r0, :upper16:.L.gt
236 ldr r1, =(.L.gtEnd - .L.gt - 1)
238 add r6, r6, #1 /* Next test */
240 mov r0, r4 /* retval */
245 .type print_result,%function
249 /* Save the label, size for our result */
253 movw r0, :lower16:.L.ok
254 movt r0, :upper16:.L.ok
255 ldr r1, =(.L.okEnd - .L.ok - 1)
258 add r0, #0x30 /* "0" + test number */
263 movw r0, :lower16:.L.swp
264 movt r0, :upper16:.L.swp
265 ldr r1, =(.L.swpEnd - .L.swp - 1)
270 movw r0, :lower16:.L.term
271 movt r0, :upper16:.L.term
272 ldr r1, =(.L.termEnd - .L.term - 1)
279 .type reset,%function
282 /* Reset sp[0] and return the address used */
289 .type expect_fail,%function
292 /* Just check the stack value */
298 /* Success (not swapped) */
304 /* Print the "not" part */
305 movw r0, :lower16:.L.not
306 movt r0, :upper16:.L.not
307 ldr r1, =(.L.notEnd - .L.not - 1)
318 .type expect_success,%function
321 /* Old value should be 3 */
327 /* Check stack value */
339 /* Print the "not" part */
340 movw r0, :lower16:.L.not
341 movt r0, :upper16:.L.not
342 ldr r1, =(.L.notEnd - .L.not - 1)
353 .type print,%function
356 /* r0 - string, r1 = size */
359 ldr r0, =STDOUT_FILENO
368 .size .L.testheader, .L.testheaderEnd - .L.testheader
373 .size .L.not, .L.notEnd - .L.not
377 .size .L.ok, .L.okEnd - .L.ok
381 .size .L.swp, .L.swpEnd - .L.swp
385 .size .L.eq, .L.eqEnd - .L.eq
389 .size .L.cs, .L.csEnd - .L.cs
393 .size .L.mi, .L.miEnd - .L.mi
397 .size .L.vs, .L.vsEnd - .L.vs
401 .size .L.hi, .L.hiEnd - .L.hi
405 .size .L.ge, .L.geEnd - .L.ge
409 .size .L.gt, .L.gtEnd - .L.gt
413 .size .L.term, .L.termEnd - .L.term