Skip to content
This repository was archived by the owner on Mar 7, 2026. It is now read-only.

Commit 9fe5889

Browse files
dragonmuxesden
authored andcommitted
hosted/platform: Fixed decode_access() to take the AP selected and properly decode the AP/!DP bit in the address field so we display accesses properly
1 parent 0ca2fb2 commit 9fe5889

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

src/platforms/hosted/platform.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -666,30 +666,30 @@ static void decode_ap_access(const uint8_t ap, const uint8_t addr)
666666
DEBUG_PROTO("Reserved(%02x): ", addr);
667667
}
668668

669-
static void decode_access(const uint16_t addr, const uint8_t rnw, const uint32_t value)
669+
static void decode_access(const uint16_t addr, const uint8_t rnw, const uint8_t apsel, const uint32_t value)
670670
{
671671
if (rnw)
672672
DEBUG_PROTO("Read ");
673673
else
674674
DEBUG_PROTO("Write ");
675675

676-
if (addr < 0x100U)
677-
decode_dp_access(addr & 0xffU, rnw, value);
676+
if (addr & ADIV5_APnDP)
677+
decode_ap_access(apsel, addr & 0xffU);
678678
else
679-
decode_ap_access(addr >> 8U, addr & 0xffU);
679+
decode_dp_access(addr & 0xffU, rnw, value);
680680
}
681681

682682
void adiv5_dp_write(adiv5_debug_port_s *dp, uint16_t addr, uint32_t value)
683683
{
684-
decode_access(addr, ADIV5_LOW_WRITE, value);
684+
decode_access(addr, ADIV5_LOW_WRITE, 0U, value);
685685
DEBUG_PROTO("0x%08" PRIx32 "\n", value);
686686
dp->low_access(dp, ADIV5_LOW_WRITE, addr, value);
687687
}
688688

689689
uint32_t adiv5_dp_read(adiv5_debug_port_s *dp, uint16_t addr)
690690
{
691691
uint32_t ret = dp->dp_read(dp, addr);
692-
decode_access(addr, ADIV5_LOW_READ, 0U);
692+
decode_access(addr, ADIV5_LOW_READ, 0U, 0U);
693693
DEBUG_PROTO("0x%08" PRIx32 "\n", ret);
694694
return ret;
695695
}
@@ -704,22 +704,22 @@ uint32_t adiv5_dp_error(adiv5_debug_port_s *dp)
704704
uint32_t adiv5_dp_low_access(adiv5_debug_port_s *dp, uint8_t rnw, uint16_t addr, uint32_t value)
705705
{
706706
uint32_t ret = dp->low_access(dp, rnw, addr, value);
707-
decode_access(addr, rnw, value);
707+
decode_access(addr, rnw, 0U, value);
708708
DEBUG_PROTO("0x%08" PRIx32 "\n", rnw ? ret : value);
709709
return ret;
710710
}
711711

712712
uint32_t adiv5_ap_read(adiv5_access_port_s *ap, uint16_t addr)
713713
{
714714
uint32_t ret = ap->dp->ap_read(ap, addr);
715-
decode_access(addr, ADIV5_LOW_READ, 0U);
715+
decode_access(addr, ADIV5_LOW_READ, ap->apsel, 0U);
716716
DEBUG_PROTO("0x%08" PRIx32 "\n", ret);
717717
return ret;
718718
}
719719

720720
void adiv5_ap_write(adiv5_access_port_s *ap, uint16_t addr, uint32_t value)
721721
{
722-
decode_access(addr, ADIV5_LOW_WRITE, value);
722+
decode_access(addr, ADIV5_LOW_WRITE, ap->apsel, value);
723723
DEBUG_PROTO("0x%08" PRIx32 "\n", value);
724724
ap->dp->ap_write(ap, addr, value);
725725
}

0 commit comments

Comments
 (0)