Skip to content

Commit

Permalink
Arm-v8m : update watchpoing / dwtv2
Browse files Browse the repository at this point in the history
  • Loading branch information
mean committed Dec 3, 2024
1 parent 377235a commit 3ea0c6a
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
18 changes: 9 additions & 9 deletions src/target/cortexm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1062,23 +1062,23 @@ static uint32_t cortexm_dwt_func(target_s *target, target_breakwatch_e type)
}
}

static uint32_t cortexm_dwt_func_v8m(target_s *target, target_breakwatch_e type, size_t len)
static uint32_t cortexm_dwtv2_func(target_breakwatch_e type, size_t len)
{
uint32_t x = CORTEXM_DWT_FUNC_ACTION_DEBUG_EVENT_V8M;
uint32_t value = CORTEXM_DWTv2_FUNC_ACTION_DEBUG_EVENT | CORTEXM_DWTv2_FUNC_LEN_VALUE(len);
switch (type) {
case TARGET_WATCH_WRITE:
x |= CORTEXM_DWT_FUNC_MATCH_WRITE_V8M;
value |= CORTEXM_DWTv2_FUNC_MATCH_WRITE;
break;
case TARGET_WATCH_READ:
x |= CORTEXM_DWT_FUNC_MATCH_READ_V8M;
value |= CORTEXM_DWTv2_FUNC_MATCH_READ;
break;
case TARGET_WATCH_ACCESS:
x |= CORTEXM_DWT_FUNC_MATCH_ACCESS_V8M;
value |= CORTEXM_DWTv2_FUNC_MATCH_ACCESS;
break;
default:
return -1;
return 0U;
}
x |= CORTEXM_DWT_FUNC_LEN_VALUE(len);
return x;
return value;
}

static int cortexm_breakwatch_set(target_s *target, breakwatch_s *breakwatch)
Expand Down Expand Up @@ -1125,7 +1125,7 @@ static int cortexm_breakwatch_set(target_s *target, breakwatch_s *breakwatch)
if ((target->target_options & CORTEXM_TOPT_FLAVOUR_V8M)) {
target_mem32_write32(target, CORTEXM_DWT_COMP(i), val);
target_mem32_write32(
target, CORTEXM_DWT_FUNC(i), cortexm_dwt_func_v8m(target, breakwatch->type, breakwatch->size));
target, CORTEXM_DWT_FUNC(i), cortexm_dwtv2_func( breakwatch->type, breakwatch->size));
} else {
target_mem32_write32(target, CORTEXM_DWT_COMP(i), val);
target_mem32_write32(target, CORTEXM_DWT_MASK(i), cortexm_dwt_mask(breakwatch->size));
Expand Down
15 changes: 7 additions & 8 deletions src/target/cortexm.h
Original file line number Diff line number Diff line change
Expand Up @@ -165,14 +165,13 @@ extern unsigned cortexm_wait_timeout;
#define CORTEXM_DWT_FUNC_FUNC_WRITE (6U << 0U)
#define CORTEXM_DWT_FUNC_FUNC_ACCESS (7U << 0U)
/* Variant for V8M */
#define CORTEXM_DWT_FUNC_MATCH_READ_V8M (6U << 0U)
#define CORTEXM_DWT_FUNC_MATCH_WRITE_V8M (5U << 0U)
#define CORTEXM_DWT_FUNC_MATCH_ACCESS_V8M (4U << 0U)
#define CORTEXM_DWT_FUNC_ACTION_TRIGGER_V8M (0U << 4U)
#define CORTEXM_DWT_FUNC_ACTION_DEBUG_EVENT_V8M (1U << 4U)
#define CORTEXM_DWT_FUNC_LEN_VALUE(len) (((len) >> 1) << 10U)

/* */
#define CORTEXM_DWTv2_FUNC_MATCH_READ (6U << 0U)
#define CORTEXM_DWTv2_FUNC_MATCH_WRITE (5U << 0U)
#define CORTEXM_DWTv2_FUNC_MATCH_ACCESS (4U << 0U)
#define CORTEXM_DWTv2_FUNC_ACTION_TRIGGER (0U << 4U)
#define CORTEXM_DWTv2_FUNC_ACTION_DEBUG_EVENT (1U << 4U)
#define CORTEXM_DWTv2_FUNC_LEN_VALUE(len) (((len) >> 1) << 10U)

#define CORTEXM_XPSR_THUMB (1U << 24U)
#define CORTEXM_XPSR_EXCEPTION_MASK 0x0000001fU

Expand Down

0 comments on commit 3ea0c6a

Please sign in to comment.