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:
Anshuman Khandual
2016-09-30 10:32:52 +08:00
committed by Michael Ellerman
parent 15ec3997aa
commit f666ad413d
8 changed files with 781 additions and 1 deletions

View File

@@ -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 */