summaryrefslogtreecommitdiff
path: root/src/target/mips32.c
diff options
context:
space:
mode:
authorkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-20 05:07:34 +0000
committerkc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2009-05-20 05:07:34 +0000
commit30268bc40fb5f238b056a10b465cb9c13f466672 (patch)
tree50f095dc2498512d06a77045e503e1ec0f92881b /src/target/mips32.c
parentb7b04525179001cd564117c5b0a38900d9f27cee (diff)
downloadopenocd+libswd-30268bc40fb5f238b056a10b465cb9c13f466672.tar.gz
openocd+libswd-30268bc40fb5f238b056a10b465cb9c13f466672.tar.bz2
openocd+libswd-30268bc40fb5f238b056a10b465cb9c13f466672.tar.xz
openocd+libswd-30268bc40fb5f238b056a10b465cb9c13f466672.zip
Author: Spencer Oliver <spen@spen-soft.co.uk>
- Bring the mips step/resume interrupt handling inline with the rest of openocd. git-svn-id: svn://svn.berlios.de/openocd/trunk@1850 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/mips32.c')
-rw-r--r--src/target/mips32.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/target/mips32.c b/src/target/mips32.c
index c109ed20..084e6276 100644
--- a/src/target/mips32.c
+++ b/src/target/mips32.c
@@ -420,3 +420,41 @@ int mips32_configure_break_unit(struct target_s *target)
return ERROR_OK;
}
+
+int mips32_enable_interrupts(struct target_s *target, int enable)
+{
+ int retval;
+ int update = 0;
+ u32 dcr;
+
+ /* read debug control register */
+ if ((retval = target_read_u32(target, EJTAG_DCR, &dcr)) != ERROR_OK)
+ return retval;
+
+ if (enable)
+ {
+ if (!(dcr & (1<<4)))
+ {
+ /* enable interrupts */
+ dcr |= (1<<4);
+ update = 1;
+ }
+ }
+ else
+ {
+ if (dcr & (1<<4))
+ {
+ /* disable interrupts */
+ dcr &= ~(1<<4);
+ update = 1;
+ }
+ }
+
+ if (update)
+ {
+ if ((retval = target_write_u32(target, EJTAG_DCR, dcr)) != ERROR_OK)
+ return retval;
+ }
+
+ return ERROR_OK;
+}