|
|
@@ -13,12 +13,12 @@
|
|
13
|
13
|
#include "mcd_arm_define.h"
|
|
14
|
14
|
|
|
15
|
15
|
/* Global task ID counter for note generation */
|
|
16
|
|
-static uint32_t task_id_counter = 3539;
|
|
|
16
|
+static uint32_t task_id_counter = 1; // 起始task ID号
|
|
17
|
17
|
|
|
18
|
18
|
#if MCD_ARM_ARCH_32BIT
|
|
19
|
19
|
/**
|
|
20
|
20
|
* @brief Fill prstatus note description for ARM32
|
|
21
|
|
- *
|
|
|
21
|
+ *
|
|
22
|
22
|
* @param desc Pointer to description buffer
|
|
23
|
23
|
* @param regset Pointer to core register set
|
|
24
|
24
|
*/
|
|
|
@@ -30,14 +30,14 @@ void arm32_fill_note_prstatus_desc(uint8_t *desc, core_regset_type *regset)
|
|
30
|
30
|
mcd_memset(desc, 0, MCOREDUMP_PRSTATUS_SIZE);
|
|
31
|
31
|
*signal = 0;
|
|
32
|
32
|
*lwpid = task_id_counter++;
|
|
33
|
|
-
|
|
|
33
|
+
|
|
34
|
34
|
/* Copy ARM32 registers to offset 72 */
|
|
35
|
35
|
mcd_memcpy(desc + MCD_PRSTATUS_REG_OFFSET, regset, sizeof(core_regset_type));
|
|
36
|
36
|
}
|
|
37
|
37
|
|
|
38
|
38
|
/**
|
|
39
|
39
|
* @brief Fill fpregset note description for ARM32
|
|
40
|
|
- *
|
|
|
40
|
+ *
|
|
41
|
41
|
* @param desc Pointer to description buffer
|
|
42
|
42
|
* @param regset Pointer to floating point register set
|
|
43
|
43
|
*/
|
|
|
@@ -60,7 +60,7 @@ void arm32_fill_note_fpregset_desc(uint8_t *desc, fp_regset_type *regset)
|
|
60
|
60
|
#if MCD_ARM_ARCH_64BIT
|
|
61
|
61
|
/**
|
|
62
|
62
|
* @brief Fill prstatus note description for ARM64
|
|
63
|
|
- *
|
|
|
63
|
+ *
|
|
64
|
64
|
* @param desc Pointer to description buffer
|
|
65
|
65
|
* @param regset Pointer to core register set
|
|
66
|
66
|
*/
|
|
|
@@ -72,15 +72,15 @@ void arm64_fill_note_prstatus_desc(uint8_t *desc, core_regset_type *regset)
|
|
72
|
72
|
mcd_memset(desc, 0, MCOREDUMP_PRSTATUS_SIZE);
|
|
73
|
73
|
*signal = 0;
|
|
74
|
74
|
*lwpid = task_id_counter++;
|
|
75
|
|
-
|
|
|
75
|
+
|
|
76
|
76
|
/* Copy ARM64 registers to offset 112 */
|
|
77
|
77
|
mcd_memcpy(desc + MCD_PRSTATUS_REG_OFFSET, regset, sizeof(core_regset_type));
|
|
78
|
78
|
}
|
|
79
|
79
|
|
|
80
|
80
|
/**
|
|
81
|
81
|
* @brief Fill fpregset note description for ARM64
|
|
82
|
|
- *
|
|
83
|
|
- * @param desc Pointer to description buffer
|
|
|
82
|
+ *
|
|
|
83
|
+ * @param desc Pointer to description buffer
|
|
84
|
84
|
* @param regset Pointer to floating point register set
|
|
85
|
85
|
*/
|
|
86
|
86
|
void arm64_fill_note_fpregset_desc(uint8_t *desc, fp_regset_type *regset)
|
|
|
@@ -89,7 +89,7 @@ void arm64_fill_note_fpregset_desc(uint8_t *desc, fp_regset_type *regset)
|
|
89
|
89
|
{
|
|
90
|
90
|
/* Copy SIMD/FP registers (32 * 16 bytes = 512 bytes) */
|
|
91
|
91
|
mcd_memcpy(desc, regset, sizeof(fp_regset_type) - 8);
|
|
92
|
|
-
|
|
|
92
|
+
|
|
93
|
93
|
/* Copy FPSR and FPCR at the end */
|
|
94
|
94
|
mcd_memcpy(desc + 32 * 16, ®set->fpsr, sizeof(uint32_t));
|
|
95
|
95
|
mcd_memcpy(desc + 32 * 16 + 4, ®set->fpcr, sizeof(uint32_t));
|