| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | 
							- /*
 
-  * Copyright (c) 2006-2019, RT-Thread Development Team
 
-  *
 
-  * SPDX-License-Identifier: Apache-2.0
 
-  *
 
-  * Change Logs:
 
-  * Date           Author       Notes
 
-  * 2019-12-04     Jiaxun Yang  Initial version
 
-  */
 
- #ifndef _MIPS_PTRACE_H
 
- #define _MIPS_PTRACE_H
 
- #include "asm.h"
 
- #include "mips_regs.h"
 
- #define HI_LO_SIZE  4
 
- #define FP_REG_SIZE 8
 
- #define NUM_FPU_REGS 16
 
- #ifndef __ASSEMBLY__
 
- #include <rtthread.h>
 
- struct mips_fpu_struct {
 
-     rt_uint64_t	fpr[NUM_FPU_REGS];
 
-     rt_uint32_t	fcr31;
 
-     rt_uint32_t	pad;
 
- };
 
- struct pt_regs {
 
- #ifndef ARCH_MIPS64
 
-     /* Only O32 Need This! */
 
-     /* Pad bytes for argument save space on the stack. */
 
-     rt_uint32_t pad0[8];
 
-     /* Saved main processor registers. */
 
-     rt_uint32_t regs[32];
 
-     /* Saved special registers. */
 
-     rt_uint32_t cp0_status;
 
-     rt_uint32_t hi;
 
-     rt_uint32_t lo;
 
-     rt_uint32_t cp0_badvaddr;
 
-     rt_uint32_t cp0_cause;
 
-     rt_uint32_t cp0_epc;
 
- #else
 
-     /* Saved main processor registers. */
 
-     unsigned long regs[32];
 
-     /* Saved special registers. */
 
-     rt_uint32_t cp0_status;
 
-     rt_uint32_t hi;
 
-     rt_uint32_t lo;
 
-     unsigned long cp0_badvaddr;
 
-     rt_uint32_t cp0_cause;
 
-     unsigned long cp0_epc;
 
- #endif
 
- #ifdef RT_USING_FPU
 
-     /* FPU Registers */
 
-     /* Unlike Linux Kernel, we save these registers unconditionally,
 
-      * so it should be a part of pt_regs */
 
-     struct mips_fpu_struct fpu;
 
- #endif
 
- } __aligned(8);
 
- #endif
 
- /* Note: For call stack o32 ABI has 0x8 shadowsoace Here  */
 
- #ifdef ARCH_MIPS64
 
- #define PT_R0		(0x0 * LONGSIZE)	/* 0 */
 
- #else
 
- #define PT_R0		(0x8 * LONGSIZE)	/* 0 */
 
- #endif
 
- #define PT_R1		((PT_R0) + LONGSIZE)	/* 1 */
 
- #define PT_R2		((PT_R1) + LONGSIZE)	/* 2 */
 
- #define PT_R3		((PT_R2) + LONGSIZE)	/* 3 */
 
- #define PT_R4		((PT_R3) + LONGSIZE)	/* 4 */
 
- #define PT_R5		((PT_R4) + LONGSIZE)	/* 5 */
 
- #define PT_R6		((PT_R5) + LONGSIZE)	/* 6 */
 
- #define PT_R7		((PT_R6) + LONGSIZE)	/* 7 */
 
- #define PT_R8		((PT_R7) + LONGSIZE)	/* 8 */
 
- #define PT_R9		((PT_R8) + LONGSIZE)	/* 9 */
 
- #define PT_R10		((PT_R9) + LONGSIZE)	/* 10 */
 
- #define PT_R11		((PT_R10) + LONGSIZE)	/* 11 */
 
- #define PT_R12		((PT_R11) + LONGSIZE)	/* 12 */
 
- #define PT_R13		((PT_R12) + LONGSIZE)	/* 13 */
 
- #define PT_R14		((PT_R13) + LONGSIZE)	/* 14 */
 
- #define PT_R15		((PT_R14) + LONGSIZE)	/* 15 */
 
- #define PT_R16		((PT_R15) + LONGSIZE)	/* 16 */
 
- #define PT_R17		((PT_R16) + LONGSIZE)	/* 17 */
 
- #define PT_R18		((PT_R17) + LONGSIZE)	/* 18 */
 
- #define PT_R19		((PT_R18) + LONGSIZE)	/* 19 */
 
- #define PT_R20		((PT_R19) + LONGSIZE)	/* 20 */
 
- #define PT_R21		((PT_R20) + LONGSIZE)	/* 21 */
 
- #define PT_R22		((PT_R21) + LONGSIZE)	/* 22 */
 
- #define PT_R23		((PT_R22) + LONGSIZE)	/* 23 */
 
- #define PT_R24		((PT_R23) + LONGSIZE)	/* 24 */
 
- #define PT_R25		((PT_R24) + LONGSIZE)	/* 25 */
 
- #define PT_R26		((PT_R25) + LONGSIZE)	/* 26 */
 
- #define PT_R27		((PT_R26) + LONGSIZE)	/* 27 */
 
- #define PT_R28		((PT_R27) + LONGSIZE)	/* 28 */
 
- #define PT_R29		((PT_R28) + LONGSIZE)	/* 29 */
 
- #define PT_R30		((PT_R29) + LONGSIZE)	/* 30 */
 
- #define PT_R31		((PT_R30) + LONGSIZE)	/* 31 */
 
- /*
 
-  * Saved special registers
 
-  */
 
- #define PT_STATUS	((PT_R31) + LONGSIZE)	/* 32 */
 
- #define PT_HI		((PT_STATUS) + HI_LO_SIZE)	/* 33 */
 
- #define PT_LO		((PT_HI) + HI_LO_SIZE)	/* 34 */
 
- #define PT_BADVADDR	((PT_LO) + LONGSIZE)	/* 35 */
 
- #define PT_CAUSE	((PT_BADVADDR) + LONGSIZE)	/* 36 */
 
- #define PT_EPC		((PT_CAUSE) + LONGSIZE)	/* 37 */
 
- #define PT_REG_END		((PT_EPC) + LONGSIZE) /* Align already ensured manually */
 
- #ifdef RT_USING_FPU
 
- #define PT_FPU_R0               (PT_REG_END)
 
- #define PT_FPU_R2               ((PT_FPU_R0) + FP_REG_SIZE)
 
- #define PT_FPU_R4               ((PT_FPU_R2) + FP_REG_SIZE)
 
- #define PT_FPU_R6               ((PT_FPU_R4) + FP_REG_SIZE)
 
- #define PT_FPU_R8               ((PT_FPU_R6) + FP_REG_SIZE)
 
- #define PT_FPU_R10              ((PT_FPU_R8) + FP_REG_SIZE)
 
- #define PT_FPU_R12              ((PT_FPU_R10) + FP_REG_SIZE)
 
- #define PT_FPU_R14              ((PT_FPU_R12) + FP_REG_SIZE)
 
- #define PT_FPU_R16              ((PT_FPU_R14) + FP_REG_SIZE)
 
- #define PT_FPU_R18              ((PT_FPU_R16) + FP_REG_SIZE)
 
- #define PT_FPU_R20              ((PT_FPU_R18) + FP_REG_SIZE)
 
- #define PT_FPU_R22              ((PT_FPU_R20) + FP_REG_SIZE)
 
- #define PT_FPU_R24              ((PT_FPU_R22) + FP_REG_SIZE)
 
- #define PT_FPU_R26              ((PT_FPU_R24) + FP_REG_SIZE)
 
- #define PT_FPU_R28              ((PT_FPU_R26) + FP_REG_SIZE)
 
- #define PT_FPU_R30              ((PT_FPU_R28) + FP_REG_SIZE)
 
- #define PT_FPU_FCSR31           ((PT_FPU_R30) + FP_REG_SIZE)
 
- #define PT_FPU_PAD0             ((PT_FPU_FCSR31) + 4)
 
- #define PT_FPU_END     	        ((PT_FPU_PAD0) + 4)
 
- #define PT_SIZE			PT_FPU_END
 
- #else
 
- #define PT_SIZE			PT_REG_END
 
- #endif
 
- #endif
 
 
  |