X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Fnds32.c;h=49fde0c9abb2c7b89172255fc0d0682b39a4f5d6;hp=11bb01d09712411e1607f036b4f1074462345496;hb=9288a59aa1bad76c8ae91c00b876fe24508476fd;hpb=cd0ef0cd3f738a8e1b81cfc06b8ec46345f970f0 diff --git a/src/target/nds32.c b/src/target/nds32.c index 11bb01d097..49fde0c9ab 100644 --- a/src/target/nds32.c +++ b/src/target/nds32.c @@ -2455,6 +2455,25 @@ int nds32_gdb_fileio_end(struct target *target, int retcode, int fileio_errno, b return ERROR_OK; } +int nds32_profiling(struct target *target, uint32_t *samples, + uint32_t max_num_samples, uint32_t *num_samples, uint32_t seconds) +{ + /* sample $PC every 10 milliseconds */ + uint32_t iteration = seconds * 100; + struct aice_port_s *aice = target_to_aice(target); + struct nds32 *nds32 = target_to_nds32(target); + + if (max_num_samples < iteration) + iteration = max_num_samples; + + int pc_regnum = nds32->register_map(nds32, PC); + aice->port->api->profiling(10, iteration, pc_regnum, samples, num_samples); + + register_cache_invalidate(nds32->core_cache); + + return ERROR_OK; +} + int nds32_gdb_fileio_write_memory(struct nds32 *nds32, uint32_t address, uint32_t size, const uint8_t *buffer) {