cortex_a: add 'dacrfixup' to cortex-a command group

work around issues with software breakpoints when the text segment
is mapped read-only by the OS. Set DACR to "all-manager" to bypass
TLB permission checks on memory access.

Change-Id: I79fd9b32b04a4d538d489896470ee30b26b72b30
Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-on: http://openocd.zylin.com/3107
Tested-by: jenkins
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
Matthias Welwarsky
2015-11-24 22:11:56 +01:00
committed by Andreas Fritiofson
parent 082417fc71
commit 5bee7f5b2c
3 changed files with 76 additions and 2 deletions

View File

@@ -60,6 +60,11 @@ enum cortex_a_isrmasking_mode {
CORTEX_A_ISRMASK_ON,
};
enum cortex_a_dacrfixup_mode {
CORTEX_A_DACRFIXUP_OFF,
CORTEX_A_DACRFIXUP_ON
};
struct cortex_a_brp {
int used;
int type;
@@ -78,9 +83,12 @@ struct cortex_a_common {
uint32_t cp15_control_reg;
/* latest cp15 register value written and cpsr processor mode */
uint32_t cp15_control_reg_curr;
/* auxiliary control reg */
uint32_t cp15_aux_control_reg;
/* DACR */
uint32_t cp15_dacr_reg;
enum arm_mode curr_mode;
/* Breakpoint register pairs */
int brp_num_context;
int brp_num;
@@ -96,6 +104,7 @@ struct cortex_a_common {
uint32_t didr;
enum cortex_a_isrmasking_mode isrmasking_mode;
enum cortex_a_dacrfixup_mode dacrfixup_mode;
struct armv7a_common armv7a_common;