selftests/powerpc: Add ptrace tests for GPR/FPR registers
This patch adds ptrace interface test for GPR/FPR registers. This adds ptrace interface based helper functions related to GPR/FPR access and some assembly helper functions related to GPR/FPR registers. Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> Signed-off-by: Simon Guo <wei.guo.simon@gmail.com> [mpe: Add #defines for the new note types when headers don't define them] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
15ec3997aa
commit
f666ad413d
@@ -81,4 +81,65 @@
|
||||
#define STXVD2X(xs, ra, rb) .long (0x7c000798 | VSX_XX1((xs), (ra), (rb)))
|
||||
#define LXVD2X(xs, ra, rb) .long (0x7c000698 | VSX_XX1((xs), (ra), (rb)))
|
||||
|
||||
#define ASM_LOAD_GPR_IMMED(_asm_symbol_name_immed) \
|
||||
"li 14, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 15, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 16, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 17, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 18, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 19, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 20, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 21, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 22, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 23, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 24, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 25, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 26, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 27, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 28, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 29, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 30, %[" #_asm_symbol_name_immed "];" \
|
||||
"li 31, %[" #_asm_symbol_name_immed "];"
|
||||
|
||||
#define ASM_LOAD_FPR_SINGLE_PRECISION(_asm_symbol_name_addr) \
|
||||
"lfs 0, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 1, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 2, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 3, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 4, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 5, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 6, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 7, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 8, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 9, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 10, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 11, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 12, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 13, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 14, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 15, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 16, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 17, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 18, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 19, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 20, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 21, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 22, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 23, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 24, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 25, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 26, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 27, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 28, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 29, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 30, 0(%[" #_asm_symbol_name_addr "]);" \
|
||||
"lfs 31, 0(%[" #_asm_symbol_name_addr "]);"
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
void store_gpr(unsigned long *addr);
|
||||
void load_gpr(unsigned long *addr);
|
||||
void load_fpr_single_precision(float *addr);
|
||||
void store_fpr_single_precision(float *addr);
|
||||
#endif /* end of __ASSEMBLER__ */
|
||||
|
||||
#endif /* _SELFTESTS_POWERPC_REG_H */
|
||||
|
Reference in New Issue
Block a user