mirror of
https://github.com/apache/nuttx.git
synced 2026-05-28 03:45:50 +08:00
arch:tcbinfo: update tcbinfo as xcpcontext update
Signed-off-by: zhuyanlin <zhuyanlin1@xiaomi.com>
This commit is contained in:
committed by
Abdelatif Guettouche
parent
ae6bfdc9b9
commit
6a761ff087
@@ -60,11 +60,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -53,12 +53,12 @@ static const uint16_t g_reg_offs[] =
|
|||||||
TCB_REG_OFF(REG_R15),
|
TCB_REG_OFF(REG_R15),
|
||||||
TCB_REG_OFF(REG_XPSR),
|
TCB_REG_OFF(REG_XPSR),
|
||||||
|
|
||||||
0, /* msp */
|
UINT16_MAX, /* msp */
|
||||||
TCB_REG_OFF(REG_R13),
|
TCB_REG_OFF(REG_R13),
|
||||||
TCB_REG_OFF(REG_PRIMASK),
|
TCB_REG_OFF(REG_PRIMASK),
|
||||||
0, /* basepri */
|
UINT16_MAX, /* basepri */
|
||||||
0, /* faultmask */
|
UINT16_MAX, /* faultmask */
|
||||||
0, /* control */
|
UINT16_MAX, /* control */
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -67,11 +67,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -102,11 +102,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ static const uint16_t g_reg_offs[] =
|
|||||||
TCB_REG_OFF(REG_R15),
|
TCB_REG_OFF(REG_R15),
|
||||||
TCB_REG_OFF(REG_XPSR),
|
TCB_REG_OFF(REG_XPSR),
|
||||||
|
|
||||||
0, /* msp */
|
UINT16_MAX, /* msp */
|
||||||
TCB_REG_OFF(REG_R13),
|
TCB_REG_OFF(REG_R13),
|
||||||
#ifdef CONFIG_ARMV7M_USEBASEPRI
|
#ifdef CONFIG_ARMV7M_USEBASEPRI
|
||||||
0, /* primask */
|
UINT16_MAX, /* primask */
|
||||||
TCB_REG_OFF(REG_BASEPRI),
|
TCB_REG_OFF(REG_BASEPRI),
|
||||||
#else
|
#else
|
||||||
TCB_REG_OFF(REG_PRIMASK),
|
TCB_REG_OFF(REG_PRIMASK),
|
||||||
0, /* basepri */
|
UINT16_MAX, /* basepri */
|
||||||
#endif
|
#endif
|
||||||
0, /* faultmask */
|
UINT16_MAX, /* faultmask */
|
||||||
0, /* control */
|
UINT16_MAX, /* control */
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_FPU
|
#ifdef CONFIG_ARCH_FPU
|
||||||
TCB_REG_OFF(REG_S0),
|
TCB_REG_OFF(REG_S0),
|
||||||
@@ -108,11 +108,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -102,11 +102,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -53,17 +53,17 @@ static const uint16_t g_reg_offs[] =
|
|||||||
TCB_REG_OFF(REG_R15),
|
TCB_REG_OFF(REG_R15),
|
||||||
TCB_REG_OFF(REG_XPSR),
|
TCB_REG_OFF(REG_XPSR),
|
||||||
|
|
||||||
0, /* msp */
|
UINT16_MAX, /* msp */
|
||||||
TCB_REG_OFF(REG_R13),
|
TCB_REG_OFF(REG_R13),
|
||||||
#ifdef CONFIG_ARMV8M_USEBASEPRI
|
#ifdef CONFIG_ARMV8M_USEBASEPRI
|
||||||
0, /* primask */
|
UINT16_MAX, /* primask */
|
||||||
TCB_REG_OFF(REG_BASEPRI),
|
TCB_REG_OFF(REG_BASEPRI),
|
||||||
#else
|
#else
|
||||||
TCB_REG_OFF(REG_PRIMASK),
|
TCB_REG_OFF(REG_PRIMASK),
|
||||||
0, /* basepri */
|
UINT16_MAX, /* basepri */
|
||||||
#endif
|
#endif
|
||||||
0, /* faultmask */
|
UINT16_MAX, /* faultmask */
|
||||||
0, /* control */
|
UINT16_MAX, /* control */
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_FPU
|
#ifdef CONFIG_ARCH_FPU
|
||||||
TCB_REG_OFF(REG_S0),
|
TCB_REG_OFF(REG_S0),
|
||||||
@@ -108,11 +108,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 17,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
static const uint16_t g_reg_offs[] =
|
static const uint16_t g_reg_offs[] =
|
||||||
{
|
{
|
||||||
0, /* x0 */
|
UINT16_MAX, /* x0 */
|
||||||
TCB_REG_OFF(REG_X1_NDX),
|
TCB_REG_OFF(REG_X1_NDX),
|
||||||
TCB_REG_OFF(REG_X2_NDX),
|
TCB_REG_OFF(REG_X2_NDX),
|
||||||
TCB_REG_OFF(REG_X3_NDX),
|
TCB_REG_OFF(REG_X3_NDX),
|
||||||
@@ -102,8 +102,8 @@ static const uint16_t g_reg_offs[] =
|
|||||||
TCB_REG_OFF(REG_F29_NDX),
|
TCB_REG_OFF(REG_F29_NDX),
|
||||||
TCB_REG_OFF(REG_F30_NDX),
|
TCB_REG_OFF(REG_F30_NDX),
|
||||||
TCB_REG_OFF(REG_F31_NDX),
|
TCB_REG_OFF(REG_F31_NDX),
|
||||||
0, /* fflags */
|
UINT16_MAX, /* fflags */
|
||||||
0, /* frm */
|
UINT16_MAX, /* frm */
|
||||||
TCB_REG_OFF(REG_FCSR_NDX),
|
TCB_REG_OFF(REG_FCSR_NDX),
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
@@ -114,11 +114,13 @@ static const uint16_t g_reg_offs[] =
|
|||||||
|
|
||||||
const struct tcbinfo_s g_tcbinfo =
|
const struct tcbinfo_s g_tcbinfo =
|
||||||
{
|
{
|
||||||
TCB_PID_OFF,
|
.pid_off = TCB_PID_OFF,
|
||||||
TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = 33,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -63,7 +63,9 @@ const struct tcbinfo_s g_tcbinfo =
|
|||||||
.state_off = TCB_STATE_OFF,
|
.state_off = TCB_STATE_OFF,
|
||||||
.pri_off = TCB_PRI_OFF,
|
.pri_off = TCB_PRI_OFF,
|
||||||
.name_off = TCB_NAME_OFF,
|
.name_off = TCB_NAME_OFF,
|
||||||
.reg_num = XCPTCONTEXT_REGS,
|
.regs_off = TCB_REGS_OFF,
|
||||||
|
.basic_num = XCPTCONTEXT_REGS,
|
||||||
|
.total_num = XCPTCONTEXT_REGS,
|
||||||
{
|
{
|
||||||
.p = g_reg_offs,
|
.p = g_reg_offs,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -193,7 +193,8 @@
|
|||||||
#else
|
#else
|
||||||
# define TCB_NAME_OFF 0
|
# define TCB_NAME_OFF 0
|
||||||
#endif
|
#endif
|
||||||
# define TCB_REG_OFF(reg) offsetof(struct tcb_s, xcp.regs[reg])
|
# define TCB_REGS_OFF offsetof(struct tcb_s, xcp.regs)
|
||||||
|
# define TCB_REG_OFF(reg) (reg * sizeof(uint32_t))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -771,14 +772,16 @@ begin_packed_struct struct tcbinfo_s
|
|||||||
uint16_t state_off; /* Offset of tcb.task_state */
|
uint16_t state_off; /* Offset of tcb.task_state */
|
||||||
uint16_t pri_off; /* Offset of tcb.sched_priority */
|
uint16_t pri_off; /* Offset of tcb.sched_priority */
|
||||||
uint16_t name_off; /* Offset of tcb.name */
|
uint16_t name_off; /* Offset of tcb.name */
|
||||||
uint16_t reg_num; /* Num of regs in tcbinfo.reg_offs */
|
uint16_t regs_off; /* Offset of tcb.regs */
|
||||||
|
uint16_t basic_num; /* Num of genernal regs */
|
||||||
|
uint16_t total_num; /* Num of regs in tcbinfo.reg_offs */
|
||||||
|
|
||||||
/* Offset pointer of xcp.regs, order in GDB org.gnu.gdb.xxx feature.
|
/* Offset pointer of xcp.regs, order in GDB org.gnu.gdb.xxx feature.
|
||||||
* Please refer:
|
* Please refer:
|
||||||
* https://sourceware.org/gdb/current/onlinedocs/gdb/ARM-Features.html
|
* https://sourceware.org/gdb/current/onlinedocs/gdb/ARM-Features.html
|
||||||
* https://sourceware.org/gdb/current/onlinedocs/gdb/RISC_002dV-Features
|
* https://sourceware.org/gdb/current/onlinedocs/gdb/RISC_002dV-Features
|
||||||
* -.html
|
* -.html
|
||||||
* value 0: This regsiter was not priovided by NuttX
|
* value UINT16_MAX: This regsiter was not priovided by NuttX
|
||||||
*/
|
*/
|
||||||
|
|
||||||
begin_packed_struct
|
begin_packed_struct
|
||||||
|
|||||||
Reference in New Issue
Block a user