openocd/src
Matthias Welwarsky 8b140fd724 cortex_a: replace cortex_a_check_address function
When accessing memory through the ARM core, privilege levels and mmu
access permissions observed. Thus it depends on the current mode of the
ARM core whether an access is possible or not. the ARM in USR mode can
not access memory mapped to a higher privilege level. This means, if the
ARM core is halted while executing at PL0, the debugger would be
prevented from setting a breakpoint at an address with a higher privilege
level, e.g. in the OS kernel. This is not desirable.

cortex_a_check_address() tried to work around this by predicting if an
access would fail and switched the ARM core to SVC mode. However, the
prediction was based on hardcoded address ranges and only worked for
Linux and a 3G/1G user/kernel space split.

This patch changes the policy to always switch to SVC mode for memory
accesses. It introduces two functions cortex_a_prep_memaccess() and
cortex_a_post_memaccess() which bracket memory reads and writes. These
function encapsulate all actions necessary for preparation and cleanup.

Change-Id: I4ccdb5fd17eadeb2b66ae28caaf0ccd2d014eaa9
Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-on: http://openocd.zylin.com/3119
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Tested-by: jenkins
2015-11-30 10:07:54 +00:00
..
flash adi_v5: Fix wrong ap value 2015-11-27 10:38:22 +00:00
helper helper/options: Use OPENOCD_SCRIPTS dir if set. 2015-11-03 22:19:36 +00:00
jtag jlink: Retrieve maximum speed from device. 2015-11-26 12:21:30 +00:00
pld cpld/virtex2: allow JSTART to be disabled 2015-08-06 13:14:01 +01:00
rtos rtos/mqx: Fix uninitialized parts of symbol table 2015-11-03 21:58:50 +00:00
server tcl_server: Support line buffers up to 4M (v3) 2015-09-30 22:01:00 +01:00
svf svf: fix progress reporting switch behaviour 2015-11-20 22:27:48 +00:00
target cortex_a: replace cortex_a_check_address function 2015-11-30 10:07:54 +00:00
transport transport: make 'transport select' auto-select the first available transport if not set 2015-03-25 21:32:49 +00:00
xsvf update files to correct FSF address 2013-06-05 19:52:42 +00:00
hello.c update files to correct FSF address 2013-06-05 19:52:42 +00:00
hello.h update files to correct FSF address 2013-06-05 19:52:42 +00:00
main.c update files to correct FSF address 2013-06-05 19:52:42 +00:00
Makefile.am Makefile.am: link libusb-1.0 after libusb-0.1 to fix dependencies 2015-02-04 21:56:45 +00:00
openocd.c docs: update OpenOCD url's to openocd.org domain 2015-04-16 20:28:21 +01:00
openocd.h Fix some problems with the bin2char utility 2014-08-02 09:01:32 +00:00