)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"8ccaf6dc922e9e209b42521add754be2e5594de1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7b19f2b6_60d954a8","updated":"2024-07-25 04:06:48.000000000","message":"Actually there could be a dap pointer in other targets than `arm` and its derivatives. Currently we have `mem_ap` target with `struct adiv5_dap *dap`.\nWouldn\u0027t be worth to define an universal dap getter, e.g. `target_to_dap()`\nwhich extracts the dap pointer from any relevant target?","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"6d9d8e407c1ead650e5b6c4ca0c4302904272748","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"592b58f4_09372de2","in_reply_to":"7b19f2b6_60d954a8","updated":"2024-07-25 08:52:47.000000000","message":"Done","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"6d9d8e407c1ead650e5b6c4ca0c4302904272748","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"7ae206a7_0e237b2e","updated":"2024-07-25 08:52:47.000000000","message":"Hi Tomas, thanks for the review.\nI made the changes you suggested","commit_id":"1c9aab33c331f262d05dfee2cd3fb947b6965b97"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"631bc2103a11192835fba30262af3116fd62bbbb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"ff8e611b_57bf979e","updated":"2024-07-26 08:04:21.000000000","message":"I think this does not cover all the use cases as we have already some SoC in the wild with RISC-V cores behind a DAP. I expect we will soon get them in OpenOCD.\n\nI would suggest a simpler implementation, as below.\nI\u0027m already using it in some of my local code (to be clean-up and upstreamed... one day).","commit_id":"62f6054dfb0b289d42f336b7ee02875bab9a1588"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"310f82ecd593acef79ce49ef5bec828a6a25c972","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"35da7fb8_1f7869b4","updated":"2026-01-27 15:06:55.000000000","message":"Looks like we forgot to merge this patch.\nIt still applies cleanly so let\u0027s do it.","commit_id":"9819c6ae646e63fc3818c34247b9654b3b7de415"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"b495c6ebb605b480b6add33c081d178cf952b7bd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"f16830e4_45d08407","updated":"2024-07-28 14:06:53.000000000","message":"Thanks!","commit_id":"9819c6ae646e63fc3818c34247b9654b3b7de415"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"b2c8a8cfb7cf5e663dbf357f6a48e13b4f6beb77","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"ab627dbc_5b5d7696","updated":"2024-07-26 08:52:35.000000000","message":"Thanks, I wasn\u0027t aware of \u0027private_config\u0027.\nI have updated with your suggestions","commit_id":"9819c6ae646e63fc3818c34247b9654b3b7de415"}],"src/target/arm_dap.c":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"8ccaf6dc922e9e209b42521add754be2e5594de1","unresolved":true,"context_lines":[{"line_number":449,"context_line":"{"},{"line_number":450,"context_line":"\tstruct target *target \u003d get_current_target(CMD_CTX);"},{"line_number":451,"context_line":"\tstruct arm *arm \u003d target_to_arm(target);"},{"line_number":452,"context_line":"\tstruct adiv5_dap *dap \u003d arm-\u003edap;"},{"line_number":453,"context_line":"\tuint64_t apsel;"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"\tif (!is_arm(arm)) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"022dafe5_95c642fc","line":452,"range":{"start_line":452,"start_character":25,"end_line":452,"end_character":33},"updated":"2024-07-25 04:06:48.000000000","message":"The first dereference takes place here...","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"6d9d8e407c1ead650e5b6c4ca0c4302904272748","unresolved":false,"context_lines":[{"line_number":449,"context_line":"{"},{"line_number":450,"context_line":"\tstruct target *target \u003d get_current_target(CMD_CTX);"},{"line_number":451,"context_line":"\tstruct arm *arm \u003d target_to_arm(target);"},{"line_number":452,"context_line":"\tstruct adiv5_dap *dap \u003d arm-\u003edap;"},{"line_number":453,"context_line":"\tuint64_t apsel;"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"\tif (!is_arm(arm)) {"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d98455a0_9f96249b","line":452,"range":{"start_line":452,"start_character":25,"end_line":452,"end_character":33},"in_reply_to":"022dafe5_95c642fc","updated":"2024-07-25 08:52:47.000000000","message":"Done","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"8ccaf6dc922e9e209b42521add754be2e5594de1","unresolved":true,"context_lines":[{"line_number":452,"context_line":"\tstruct adiv5_dap *dap \u003d arm-\u003edap;"},{"line_number":453,"context_line":"\tuint64_t apsel;"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"\tif (!is_arm(arm)) {"},{"line_number":456,"context_line":"\t\tcommand_print(CMD, \"target \u0027%s\u0027 is \u0027%s\u0027; not an ARM\","},{"line_number":457,"context_line":"\t\t\ttarget_name(target),"},{"line_number":458,"context_line":"\t\t\ttarget_type_name(target));"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"b0a76024_aaafbdf9","line":455,"updated":"2024-07-25 04:06:48.000000000","message":"...so the check is somewhat late","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"6d9d8e407c1ead650e5b6c4ca0c4302904272748","unresolved":false,"context_lines":[{"line_number":452,"context_line":"\tstruct adiv5_dap *dap \u003d arm-\u003edap;"},{"line_number":453,"context_line":"\tuint64_t apsel;"},{"line_number":454,"context_line":""},{"line_number":455,"context_line":"\tif (!is_arm(arm)) {"},{"line_number":456,"context_line":"\t\tcommand_print(CMD, \"target \u0027%s\u0027 is \u0027%s\u0027; not an ARM\","},{"line_number":457,"context_line":"\t\t\ttarget_name(target),"},{"line_number":458,"context_line":"\t\t\ttarget_type_name(target));"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"916a3c7d_a16867f1","line":455,"in_reply_to":"b0a76024_aaafbdf9","updated":"2024-07-25 08:52:47.000000000","message":"Done","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"631bc2103a11192835fba30262af3116fd62bbbb","unresolved":true,"context_lines":[{"line_number":429,"context_line":"\treturn dap_create(\u0026goi);"},{"line_number":430,"context_line":"}"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"static struct adiv5_dap *target_to_dap(const struct target *target)"},{"line_number":433,"context_line":"{"},{"line_number":434,"context_line":"\tstruct arm *arm \u003d target_to_arm_safe(target);"},{"line_number":435,"context_line":"\tif (arm)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"8cdb7c2b_adfb279a","line":432,"updated":"2024-07-26 08:04:21.000000000","message":"Keep this function, but use a simpler code:\n```\nstatic struct adiv5_dap *target_to_dap(const struct target *target)\n{\n\tstruct adiv5_private_config *pc \u003d target-\u003eprivate_config;\n\t\n\tif (!target-\u003ehas_dap || !target-\u003edap_configured || !pc)\n\t\treturn NULL;\n\n\treturn pc-\u003edap;\n}\n```\nBy dropping the dependency on target-specific structures `struct arm`, `struct mem_ap` and whatever target will come next, we keep better isolation between targets avoiding cross dependencies.\n\nApart from this file, no other code change is required in any other file. This makes this patch trivial.\n\nI have started studying how to move the DAP in `struct target` to avoid duplication, but removing DAP from `struct arm` is too invasive and I have put on hold this idea. Eventually, to be re-investigated.","commit_id":"62f6054dfb0b289d42f336b7ee02875bab9a1588"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"b2c8a8cfb7cf5e663dbf357f6a48e13b4f6beb77","unresolved":false,"context_lines":[{"line_number":429,"context_line":"\treturn dap_create(\u0026goi);"},{"line_number":430,"context_line":"}"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"static struct adiv5_dap *target_to_dap(const struct target *target)"},{"line_number":433,"context_line":"{"},{"line_number":434,"context_line":"\tstruct arm *arm \u003d target_to_arm_safe(target);"},{"line_number":435,"context_line":"\tif (arm)"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"291f45ce_c565ac05","line":432,"in_reply_to":"8cdb7c2b_adfb279a","updated":"2024-07-26 08:52:35.000000000","message":"Done","commit_id":"62f6054dfb0b289d42f336b7ee02875bab9a1588"},{"author":{"_account_id":1000021,"name":"Antonio Borneo","email":"borneo.antonio@gmail.com","username":"borneoa"},"change_message_id":"631bc2103a11192835fba30262af3116fd62bbbb","unresolved":true,"context_lines":[{"line_number":466,"context_line":"\tuint64_t apsel;"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"\tif (!dap) {"},{"line_number":469,"context_line":"\t\tcommand_print(CMD, \"DAP instance not available. Probably a HLA target...\");"},{"line_number":470,"context_line":"\t\treturn ERROR_TARGET_RESOURCE_NOT_AVAILABLE;"},{"line_number":471,"context_line":"\t}"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ebc9b081_0d7a58d2","line":469,"updated":"2024-07-26 08:04:21.000000000","message":"Maybe better to use a more generic message, like\n```\ncommand_print(CMD, \"target %s has no DAP\", target_name(target));\n```\nas HLA is just Cortex-M specific, so far.","commit_id":"62f6054dfb0b289d42f336b7ee02875bab9a1588"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"b2c8a8cfb7cf5e663dbf357f6a48e13b4f6beb77","unresolved":false,"context_lines":[{"line_number":466,"context_line":"\tuint64_t apsel;"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"\tif (!dap) {"},{"line_number":469,"context_line":"\t\tcommand_print(CMD, \"DAP instance not available. Probably a HLA target...\");"},{"line_number":470,"context_line":"\t\treturn ERROR_TARGET_RESOURCE_NOT_AVAILABLE;"},{"line_number":471,"context_line":"\t}"},{"line_number":472,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"f87cd2f8_34b1807d","line":469,"in_reply_to":"ebc9b081_0d7a58d2","updated":"2024-07-26 08:52:35.000000000","message":"Done","commit_id":"62f6054dfb0b289d42f336b7ee02875bab9a1588"}],"src/target/armv7m.h":[{"author":{"_account_id":1000687,"name":"Tomas Vanek","display_name":"Tomas Vanek","email":"vanekt@fbl.cz","username":"vanekt"},"change_message_id":"8ccaf6dc922e9e209b42521add754be2e5594de1","unresolved":true,"context_lines":[{"line_number":271,"context_line":" * type can happen."},{"line_number":272,"context_line":" */"},{"line_number":273,"context_line":"static inline struct armv7m_common *"},{"line_number":274,"context_line":"target_to_armv7m_safe(struct target *target)"},{"line_number":275,"context_line":"{"},{"line_number":276,"context_line":"\tif (!target)"},{"line_number":277,"context_line":"\t\treturn NULL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"4d7c0d49_8a4742b9","line":274,"range":{"start_line":274,"start_character":0,"end_line":274,"end_character":21},"updated":"2024-07-25 04:06:48.000000000","message":"We might need a similar target_to_arm_safe() converter helper","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"},{"author":{"_account_id":1002286,"name":"Grant Ramsay","email":"grant.ramsay@hotmail.com","username":"gramsay0"},"change_message_id":"6d9d8e407c1ead650e5b6c4ca0c4302904272748","unresolved":false,"context_lines":[{"line_number":271,"context_line":" * type can happen."},{"line_number":272,"context_line":" */"},{"line_number":273,"context_line":"static inline struct armv7m_common *"},{"line_number":274,"context_line":"target_to_armv7m_safe(struct target *target)"},{"line_number":275,"context_line":"{"},{"line_number":276,"context_line":"\tif (!target)"},{"line_number":277,"context_line":"\t\treturn NULL;"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"d5783ec8_8eb8dcc2","line":274,"range":{"start_line":274,"start_character":0,"end_line":274,"end_character":21},"in_reply_to":"4d7c0d49_8a4742b9","updated":"2024-07-25 08:52:47.000000000","message":"Done","commit_id":"dfac674f2930c8bc925cdbfb9fd60680f2b9afe7"}]}
