diff options
author | kc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-20 05:07:34 +0000 |
---|---|---|
committer | kc8apf <kc8apf@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-05-20 05:07:34 +0000 |
commit | 30268bc40fb5f238b056a10b465cb9c13f466672 (patch) | |
tree | 50f095dc2498512d06a77045e503e1ec0f92881b /src/target/mips32.c | |
parent | b7b04525179001cd564117c5b0a38900d9f27cee (diff) | |
download | riscv-openocd-30268bc40fb5f238b056a10b465cb9c13f466672.zip riscv-openocd-30268bc40fb5f238b056a10b465cb9c13f466672.tar.gz riscv-openocd-30268bc40fb5f238b056a10b465cb9c13f466672.tar.bz2 |
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.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/target/mips32.c b/src/target/mips32.c index c109ed2..084e627 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; +} |