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>
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __SELFTESTS_POWERPC_PPC_ASM_H
|
||||
#define __SELFTESTS_POWERPC_PPC_ASM_H
|
||||
#include <ppc-asm.h>
|
||||
|
||||
#define CONFIG_ALTIVEC
|
||||
@@ -26,25 +28,10 @@
|
||||
|
||||
#define PPC_MTOCRF(A, B) mtocrf A, B
|
||||
|
||||
#define EX_TABLE(x, y)
|
||||
|
||||
FUNC_START(enter_vmx_usercopy)
|
||||
li r3,1
|
||||
blr
|
||||
|
||||
FUNC_START(exit_vmx_usercopy)
|
||||
li r3,0
|
||||
blr
|
||||
|
||||
FUNC_START(enter_vmx_ops)
|
||||
li r3,1
|
||||
blr
|
||||
|
||||
FUNC_START(exit_vmx_ops)
|
||||
blr
|
||||
|
||||
FUNC_START(__copy_tofrom_user_base)
|
||||
blr
|
||||
#define EX_TABLE(x, y) \
|
||||
.section __ex_table,"a"; \
|
||||
.8byte x, y; \
|
||||
.previous
|
||||
|
||||
#define BEGIN_FTR_SECTION .if test_feature
|
||||
#define FTR_SECTION_ELSE .else
|
||||
@@ -56,3 +43,5 @@ FUNC_START(__copy_tofrom_user_base)
|
||||
|
||||
/* Default to taking the first of any alternative feature sections */
|
||||
test_feature = 1
|
||||
|
||||
#endif /* __SELFTESTS_POWERPC_PPC_ASM_H */
|
||||
|
Reference in New Issue
Block a user