diff options
author | Michael Ellerman <mpe@ellerman.id.au> | 2018-08-03 20:13:05 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2018-08-08 00:32:35 +1000 |
commit | 2679f63fe5e4bb1459a0c20859a99c70c15d5ea1 (patch) | |
tree | 19a843ace4fd633800529e9f44e77d583f7fd464 /tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S | |
parent | selftests/powerpc/64: Test all paths through copy routines (diff) | |
download | linux-dev-2679f63fe5e4bb1459a0c20859a99c70c15d5ea1.tar.xz linux-dev-2679f63fe5e4bb1459a0c20859a99c70c15d5ea1.zip |
selftests/powerpc/64: Test exception cases in copy_tofrom_user
This adds a set of test cases to test the behaviour of
copy_tofrom_user when exceptions are encountered accessing the
source or destination. Currently, copy_tofrom_user does not always
copy as many bytes as possible when an exception occurs on a store
to the destination, and that is reflected in failures in these tests.
Based on a test program from Anton Blanchard.
[paulus@ozlabs.org - test all three paths, wrote commit description,
made EX_TABLE create an exception table.]
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S')
-rw-r--r-- | tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S b/tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S new file mode 100644 index 000000000000..3363b86407d6 --- /dev/null +++ b/tools/testing/selftests/powerpc/copyloops/copy_tofrom_user_reference.S @@ -0,0 +1,24 @@ +#include <asm/ppc_asm.h> + +_GLOBAL(copy_tofrom_user_reference) + cmpdi r5,0 + beq 4f + + mtctr r5 + +1: lbz r6,0(r4) +2: stb r6,0(r3) + addi r3,r3,1 + addi r4,r4,1 + bdnz 1b + +3: mfctr r3 + blr + +4: mr r3,r5 + blr + +.section __ex_table,"a" + .llong 1b,3b + .llong 2b,3b +.text |