mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
selftests/powerpc: Properly handle failure in switch_endian_test
On older CPUs the switch_endian() syscall doesn't work. Currently that causes the switch_endian_test to just crash. Instead detect the failure and properly exit with a failure message. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200819015727.1977134-9-mpe@ellerman.id.au
This commit is contained in:
@@ -3,9 +3,13 @@
|
||||
|
||||
.data
|
||||
.balign 8
|
||||
message:
|
||||
success_message:
|
||||
.ascii "success: switch_endian_test\n\0"
|
||||
|
||||
.balign 8
|
||||
failure_message:
|
||||
.ascii "failure: switch_endian_test\n\0"
|
||||
|
||||
.section ".toc"
|
||||
.balign 8
|
||||
pattern:
|
||||
@@ -64,6 +68,9 @@ FUNC_START(_start)
|
||||
li r0, __NR_switch_endian
|
||||
sc
|
||||
|
||||
tdi 0, 0, 0x48 // b +8 if the endian was switched
|
||||
b .Lfail // exit if endian didn't switch
|
||||
|
||||
#include "check-reversed.S"
|
||||
|
||||
/* Flip back, r0 already has the switch syscall number */
|
||||
@@ -71,12 +78,20 @@ FUNC_START(_start)
|
||||
|
||||
#include "check.S"
|
||||
|
||||
ld r4, success_message@got(%r2)
|
||||
li r5, 28 // strlen(success_message)
|
||||
li r14, 0 // exit status
|
||||
.Lout:
|
||||
li r0, __NR_write
|
||||
li r3, 1 /* stdout */
|
||||
ld r4, message@got(%r2)
|
||||
li r5, 28 /* strlen(message3) */
|
||||
sc
|
||||
li r0, __NR_exit
|
||||
li r3, 0
|
||||
mr r3, r14
|
||||
sc
|
||||
b .
|
||||
|
||||
.Lfail:
|
||||
ld r4, failure_message@got(%r2)
|
||||
li r5, 28 // strlen(failure_message)
|
||||
li r14, 1
|
||||
b .Lout
|
||||
|
||||
Reference in New Issue
Block a user