[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 22/29] transitioning to unsinged integers in TCP packets and r
From: |
Nicolas Eder |
Subject: |
[PATCH v2 22/29] transitioning to unsinged integers in TCP packets and removing MCD-API-specific terms |
Date: |
Fri, 6 Oct 2023 11:06:03 +0200 |
From: neder <nicolas.eder@lauterbach.com>
---
mcdstub/mcd_shared_defines.h | 8 ++++
mcdstub/mcdstub.c | 74 ++++++++++++++++++++----------------
mcdstub/mcdstub.h | 33 +++++-----------
target/arm/mcdstub.c | 2 +-
4 files changed, 60 insertions(+), 57 deletions(-)
diff --git a/mcdstub/mcd_shared_defines.h b/mcdstub/mcd_shared_defines.h
index 91d476a555..5cfda4121d 100644
--- a/mcdstub/mcd_shared_defines.h
+++ b/mcdstub/mcd_shared_defines.h
@@ -91,4 +91,12 @@
#define MCD_BREAKPOINT_WRITE 3
#define MCD_BREAKPOINT_RW 4
+/* trigger data */
+#define MCD_TRIG_ACT_BREAK "check_data_value"
+#define MCD_TRIG_OPT_VALUE "break_on_trigger"
+
+/* register mem space key words */
+#define MCD_GRP_KEYWORD "GPR"
+#define MCD_CP_KEYWORD "CP"
+
#endif
diff --git a/mcdstub/mcdstub.c b/mcdstub/mcdstub.c
index 7d8ce634c8..8e711a0a40 100644
--- a/mcdstub/mcdstub.c
+++ b/mcdstub/mcdstub.c
@@ -1303,12 +1303,15 @@ int init_resets(GArray *resets)
int init_trigger(mcd_trigger_into_st *trigger)
{
- trigger->type = (MCD_TRIG_TYPE_IP | MCD_TRIG_TYPE_READ |
- MCD_TRIG_TYPE_WRITE | MCD_TRIG_TYPE_RW);
- trigger->option = (MCD_TRIG_OPT_DATA_IS_CONDITION);
- trigger->action = (MCD_TRIG_ACTION_DBG_DEBUG);
- /* there is no specific upper limit for trigger */
- trigger->nr_trigger = 0;
+ snprintf(trigger->type, sizeof(trigger->type),
+ "%d,%d,%d,%d", MCD_BREAKPOINT_HW, MCD_BREAKPOINT_READ,
+ MCD_BREAKPOINT_WRITE, MCD_BREAKPOINT_RW);
+ snprintf(trigger->option, sizeof(trigger->option),
+ "%s", MCD_TRIG_OPT_VALUE);
+ snprintf(trigger->action, sizeof(trigger->action),
+ "%s", MCD_TRIG_ACT_BREAK);
+ /* there can be 16 breakpoints and 16 watchpoints each */
+ trigger->nr_trigger = 16;
return 0;
}
@@ -1348,9 +1351,9 @@ void handle_query_cores(GArray *params, void *user_ctx)
CPUClass *cc = CPU_GET_CLASS(cpu);
gchar *arch = cc->gdb_arch_name(cpu);
- int nr_cores = cpu->nr_cores;
+ uint32_t nr_cores = cpu->nr_cores;
char device_name[] = DEVICE_NAME_TEMPLATE(arch);
- g_string_printf(mcdserver_state.str_buf, "%s=%s.%s=%s.%s=%d.",
+ g_string_printf(mcdserver_state.str_buf, "%s=%s.%s=%s.%s=%u.",
TCP_ARGUMENT_DEVICE, device_name, TCP_ARGUMENT_CORE, cpu_model,
TCP_ARGUMENT_AMOUNT_CORE, nr_cores);
mcd_put_strbuf();
@@ -1576,7 +1579,7 @@ void handle_query_reset_f(GArray *params, void *user_ctx)
}
/* 2. send data */
mcd_reset_st reset = g_array_index(mcdserver_state.resets, mcd_reset_st,
0);
- g_string_append_printf(mcdserver_state.str_buf, "%s=%s.%s=%d.",
+ g_string_append_printf(mcdserver_state.str_buf, "%s=%s.%s=%u.",
TCP_ARGUMENT_NAME, reset.name, TCP_ARGUMENT_ID, reset.id);
mcd_put_strbuf();
}
@@ -1592,13 +1595,13 @@ void handle_query_reset_c(GArray *params, void
*user_ctx)
/* indicates this is the last packet */
g_string_printf(mcdserver_state.str_buf, "0!");
} else {
- g_string_printf(mcdserver_state.str_buf, "%d!", query_index + 1);
+ g_string_printf(mcdserver_state.str_buf, "%u!", query_index + 1);
}
/* 2. send data */
mcd_reset_st reset = g_array_index(mcdserver_state.resets,
mcd_reset_st, query_index);
- g_string_append_printf(mcdserver_state.str_buf, "%s=%s.%s=%d.",
+ g_string_append_printf(mcdserver_state.str_buf, "%s=%s.%s=%u.",
TCP_ARGUMENT_NAME, reset.name, TCP_ARGUMENT_ID, reset.id);
mcd_put_strbuf();
}
@@ -1652,9 +1655,10 @@ void handle_close_server(GArray *params, void *user_ctx)
void handle_query_trigger(GArray *params, void *user_ctx)
{
mcd_trigger_into_st trigger = mcdserver_state.trigger;
- g_string_printf(mcdserver_state.str_buf, "%s=%d.%s=%d.%s=%d.%s=%d.",
+ g_string_printf(mcdserver_state.str_buf, "%s=%u.%s=%s.%s=%s.%s=%s.",
TCP_ARGUMENT_AMOUNT_TRIGGER, trigger.nr_trigger,
- TCP_ARGUMENT_TYPE, trigger.type, TCP_ARGUMENT_OPTION, trigger.option,
+ TCP_ARGUMENT_TYPE, trigger.type,
+ TCP_ARGUMENT_OPTION, trigger.option,
TCP_ARGUMENT_ACTION, trigger.action);
mcd_put_strbuf();
}
@@ -1714,13 +1718,16 @@ void handle_query_mem_spaces_f(GArray *params, void
*user_ctx)
/* 3. send data */
mcd_mem_space_st space = g_array_index(memspaces, mcd_mem_space_st, 0);
g_string_append_printf(mcdserver_state.str_buf,
- "%s=%s.%s=%d.%s=%d.%s=%d.%s=%d.%s=%d.%s=%ld.%s=%ld.%s=%d.",
- TCP_ARGUMENT_NAME, space.name, TCP_ARGUMENT_ID, space.id,
- TCP_ARGUMENT_TYPE, space.type, TCP_ARGUMENT_BITS_PER_MAU,
- space.bits_per_mau, TCP_ARGUMENT_INVARIANCE, space.invariance,
- TCP_ARGUMENT_ENDIAN, space.endian, TCP_ARGUMENT_MIN, space.min_addr,
- TCP_ARGUMENT_MAX, space.max_addr,
TCP_ARGUMENT_SUPPORTED_ACCESS_OPTIONS,
- space.supported_access_options);
+ "%s=%s.%s=%u.%s=%u.%s=%u.%s=%u.%s=%u.%s=%ld.%s=%ld.%s=%u.",
+ TCP_ARGUMENT_NAME, space.name,
+ TCP_ARGUMENT_ID, space.id,
+ TCP_ARGUMENT_TYPE, space.type,
+ TCP_ARGUMENT_BITS_PER_MAU, space.bits_per_mau,
+ TCP_ARGUMENT_INVARIANCE, space.invariance,
+ TCP_ARGUMENT_ENDIAN, space.endian,
+ TCP_ARGUMENT_MIN, space.min_addr,
+ TCP_ARGUMENT_MAX, space.max_addr,
+ TCP_ARGUMENT_SUPPORTED_ACCESS_OPTIONS, space.supported_access_options);
mcd_put_strbuf();
}
@@ -1740,20 +1747,23 @@ void handle_query_mem_spaces_c(GArray *params, void
*user_ctx)
/* indicates this is the last packet */
g_string_printf(mcdserver_state.str_buf, "0!");
} else {
- g_string_printf(mcdserver_state.str_buf, "%d!", query_index + 1);
+ g_string_printf(mcdserver_state.str_buf, "%u!", query_index + 1);
}
/* 3. send the correct memspace */
mcd_mem_space_st space = g_array_index(memspaces,
mcd_mem_space_st, query_index);
g_string_append_printf(mcdserver_state.str_buf,
- "%s=%s.%s=%d.%s=%d.%s=%d.%s=%d.%s=%d.%s=%ld.%s=%ld.%s=%d.",
- TCP_ARGUMENT_NAME, space.name, TCP_ARGUMENT_ID,
- space.id, TCP_ARGUMENT_TYPE, space.type, TCP_ARGUMENT_BITS_PER_MAU,
- space.bits_per_mau, TCP_ARGUMENT_INVARIANCE, space.invariance,
- TCP_ARGUMENT_ENDIAN, space.endian, TCP_ARGUMENT_MIN, space.min_addr,
- TCP_ARGUMENT_MAX, space.max_addr,
TCP_ARGUMENT_SUPPORTED_ACCESS_OPTIONS,
- space.supported_access_options);
+ "%s=%s.%s=%u.%s=%u.%s=%u.%s=%u.%s=%u.%s=%ld.%s=%ld.%s=%u.",
+ TCP_ARGUMENT_NAME, space.name,
+ TCP_ARGUMENT_ID, space.id,
+ TCP_ARGUMENT_TYPE, space.type,
+ TCP_ARGUMENT_BITS_PER_MAU, space.bits_per_mau,
+ TCP_ARGUMENT_INVARIANCE, space.invariance,
+ TCP_ARGUMENT_ENDIAN, space.endian,
+ TCP_ARGUMENT_MIN, space.min_addr,
+ TCP_ARGUMENT_MAX, space.max_addr,
+ TCP_ARGUMENT_SUPPORTED_ACCESS_OPTIONS, space.supported_access_options);
mcd_put_strbuf();
}
@@ -1774,7 +1784,7 @@ void handle_query_reg_groups_f(GArray *params, void
*user_ctx)
}
/* 3. send data */
mcd_reg_group_st group = g_array_index(reggroups, mcd_reg_group_st, 0);
- g_string_append_printf(mcdserver_state.str_buf, "%s=%d.%s=%s.",
+ g_string_append_printf(mcdserver_state.str_buf, "%s=%u.%s=%s.",
TCP_ARGUMENT_ID, group.id, TCP_ARGUMENT_NAME, group.name);
mcd_put_strbuf();
}
@@ -1795,13 +1805,13 @@ void handle_query_reg_groups_c(GArray *params, void
*user_ctx)
/* indicates this is the last packet */
g_string_printf(mcdserver_state.str_buf, "0!");
} else {
- g_string_printf(mcdserver_state.str_buf, "%d!", query_index + 1);
+ g_string_printf(mcdserver_state.str_buf, "%u!", query_index + 1);
}
/* 3. send the correct reggroup */
mcd_reg_group_st group = g_array_index(reggroups, mcd_reg_group_st,
query_index);
- g_string_append_printf(mcdserver_state.str_buf, "%s=%d.%s=%s.",
+ g_string_append_printf(mcdserver_state.str_buf, "%s=%u.%s=%s.",
TCP_ARGUMENT_ID, group.id, TCP_ARGUMENT_NAME, group.name);
mcd_put_strbuf();
}
@@ -1852,7 +1862,7 @@ void handle_query_regs_c(GArray *params, void *user_ctx)
/* indicates this is the last packet */
g_string_printf(mcdserver_state.str_buf, "0!");
} else {
- g_string_printf(mcdserver_state.str_buf, "%d!", query_index + 1);
+ g_string_printf(mcdserver_state.str_buf, "%u!", query_index + 1);
}
/* 3. send the correct register */
diff --git a/mcdstub/mcdstub.h b/mcdstub/mcdstub.h
index f8171cba71..a436551bb1 100644
--- a/mcdstub/mcdstub.h
+++ b/mcdstub/mcdstub.h
@@ -13,22 +13,6 @@
#define MCD_TRIG_OPT_DATA_IS_CONDITION 0x00000008
#define MCD_TRIG_ACTION_DBG_DEBUG 0x00000001
-typedef uint32_t mcd_trig_type_et;
-/* TODO: replace mcd defines with custom layer */
-enum {
- MCD_TRIG_TYPE_UNDEFINED = 0x00000000,
- MCD_TRIG_TYPE_IP = 0x00000001,
- MCD_TRIG_TYPE_READ = 0x00000002,
- MCD_TRIG_TYPE_WRITE = 0x00000004,
- MCD_TRIG_TYPE_RW = 0x00000008,
- MCD_TRIG_TYPE_NOCYCLE = 0x00000010,
- MCD_TRIG_TYPE_TRIG_BUS = 0x00000020,
- MCD_TRIG_TYPE_COUNTER = 0x00000040,
- MCD_TRIG_TYPE_CUSTOM = 0x00000080,
- MCD_TRIG_TYPE_CUSTOM_LO = 0x00010000,
- MCD_TRIG_TYPE_CUSTOM_HI = 0x40000000,
-};
-
typedef uint32_t mcd_core_event_et;
/* TODO: replace mcd defines with custom layer */
enum {
@@ -60,6 +44,7 @@ enum {
#define QUERY_TOTAL_NUMBER 12
#define CMD_SCHEMA_LENGTH 6
#define MCD_SYSTEM_NAME "qemu-system"
+#define ARGUMENT_STRING_LENGTH 64
/* tcp query packet values templates */
#define DEVICE_NAME_TEMPLATE(s) "qemu-" #s "-device"
@@ -126,9 +111,9 @@ typedef struct breakpoint_st {
} breakpoint_st;
typedef struct mcd_trigger_into_st {
- uint32_t type;
- uint32_t option;
- uint32_t action;
+ char type[ARGUMENT_STRING_LENGTH];
+ char option[ARGUMENT_STRING_LENGTH];
+ char action[ARGUMENT_STRING_LENGTH];
uint32_t nr_trigger;
} mcd_trigger_into_st;
@@ -195,15 +180,15 @@ typedef struct mcd_reg_group_st {
} mcd_reg_group_st;
typedef struct xml_attrib {
- char argument[64];
- char value[64];
+ char argument[ARGUMENT_STRING_LENGTH];
+ char value[ARGUMENT_STRING_LENGTH];
} xml_attrib;
typedef struct mcd_reg_st {
/* xml info */
- char name[64];
- char group[64];
- char type[64];
+ char name[ARGUMENT_STRING_LENGTH];
+ char group[ARGUMENT_STRING_LENGTH];
+ char type[ARGUMENT_STRING_LENGTH];
uint32_t bitsize;
uint32_t id; /* id used by the mcd interface */
uint32_t internal_id; /* id inside reg type */
diff --git a/target/arm/mcdstub.c b/target/arm/mcdstub.c
index 8456352370..3a35d1062d 100644
--- a/target/arm/mcdstub.c
+++ b/target/arm/mcdstub.c
@@ -333,7 +333,7 @@ uint16_t arm_mcd_get_opcode(CPUState *cs, uint32_t n)
int arm_mcd_set_scr(CPUState *cs, bool secure)
{
- /* swtiches between secure and non secure mode */
+ /* switches between secure and non secure mode */
ARMCPU *cpu = ARM_CPU(cs);
CPUARMState *env = &cpu->env;
/* set bit 0 to 1 if non secure, to 0 if secure*/
--
2.34.1
- [PATCH v2 12/29] handler for reading registers added, (continued)
- [PATCH v2 12/29] handler for reading registers added, Nicolas Eder, 2023/10/06
- [PATCH v2 16/29] deleting the mcdd startup option, Nicolas Eder, 2023/10/06
- [PATCH v2 15/29] adapting to the qemu coding style, Nicolas Eder, 2023/10/06
- [PATCH v2 18/29] making step and go handlers core-specific, Nicolas Eder, 2023/10/06
- [PATCH v2 14/29] handler for single step added, Nicolas Eder, 2023/10/06
- [PATCH v2 13/29] handler for reading memory added, Nicolas Eder, 2023/10/06
- [PATCH v2 17/29] handler for breakpoints and watchpoints added, Nicolas Eder, 2023/10/06
- [PATCH v2 24/29] step and go handlers now propperly perform global operations, Nicolas Eder, 2023/10/06
- [PATCH v2 19/29] adding trigger ID handling for TRACE32, Nicolas Eder, 2023/10/06
- [PATCH v2 22/29] transitioning to unsinged integers in TCP packets and removing MCD-API-specific terms,
Nicolas Eder <=
- [PATCH v2 21/29] switching between secure and non-secure memory added, Nicolas Eder, 2023/10/06
- [PATCH v2 23/29] moved all ARM code to the ARM mcdstub and added now commom header file, Nicolas Eder, 2023/10/06
- [PATCH v2 26/29] moved all mcd related header files into include/mcdstub, Nicolas Eder, 2023/10/06
- [PATCH v2 25/29] Doxygen documentation added, Nicolas Eder, 2023/10/06
- [PATCH v2 20/29] cp register read/write added, Nicolas Eder, 2023/10/06
- [PATCH v2 28/29] added description to out-commented gdb function, Nicolas Eder, 2023/10/06
- [PATCH v2 29/29] introducing the DebugClass. It is used to abstract the gdb/mcd set_stop_cpu function., Nicolas Eder, 2023/10/06
- [PATCH v2 27/29] MCD stub entry added to maintainers file, Nicolas Eder, 2023/10/06