summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-10-23 12:28:03 -0700
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-10-23 12:28:03 -0700
commit75cdc8a260e081752698f374d4cd6e97e84eb6cb (patch)
tree0243254891f694470d6b9147431746837dcc4394
parentbfefe85645a51d8e5f94879dcd0321abafdcbf7c (diff)
downloadopenocd+libswd-75cdc8a260e081752698f374d4cd6e97e84eb6cb.tar.gz
openocd+libswd-75cdc8a260e081752698f374d4cd6e97e84eb6cb.tar.bz2
openocd+libswd-75cdc8a260e081752698f374d4cd6e97e84eb6cb.tar.xz
openocd+libswd-75cdc8a260e081752698f374d4cd6e97e84eb6cb.zip
arm9tdmi vector_catch: reserved means "don't use"
Bit 5 shouldn't be used. Remove all support for modifying it. Matches the exception vector table, of course ... more than one bootloader uses that non-vector to help distinguish valid boot images from random garbage in flash.
-rw-r--r--doc/openocd.texi4
-rw-r--r--src/target/arm9tdmi.c3
-rw-r--r--src/target/arm9tdmi.h2
3 files changed, 5 insertions, 4 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi
index c9e48bfa..67609942 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -5460,6 +5460,8 @@ ARMv5TE architecture instead of ARMv4T.
@c 9-june-2009: tried this on arm920t, it didn't work.
@c no-params always lists nothing caught, and that's how it acts.
+@c 23-oct-2009: doesn't work _consistently_ ... as if the ICE
+@c versions have different rules about when they commit writes.
@anchor{arm9tdmi vector_catch}
@deffn Command {arm9tdmi vector_catch} [@option{all}|@option{none}|list]
@@ -5476,7 +5478,7 @@ vector catch hardware to intercept
@option{all} of the hardware vectors,
@option{none} of them,
or a list with one or more of the following:
-@option{reset} @option{undef} @option{swi} @option{pabt} @option{dabt} @option{reserved}
+@option{reset} @option{undef} @option{swi} @option{pabt} @option{dabt}
@option{irq} @option{fiq}.
@end deffn
diff --git a/src/target/arm9tdmi.c b/src/target/arm9tdmi.c
index f941922a..12b68ae5 100644
--- a/src/target/arm9tdmi.c
+++ b/src/target/arm9tdmi.c
@@ -95,7 +95,6 @@ static arm9tdmi_vector_t arm9tdmi_vectors[] =
{"swi", ARM9TDMI_SWI_VECTOR},
{"pabt", ARM9TDMI_PABT_VECTOR},
{"dabt", ARM9TDMI_DABT_VECTOR},
- {"reserved", ARM9TDMI_RESERVED_VECTOR},
{"irq", ARM9TDMI_IRQ_VECTOR},
{"fiq", ARM9TDMI_FIQ_VECTOR},
{0, 0},
@@ -1067,7 +1066,7 @@ int arm9tdmi_register_commands(struct command_context_s *cmd_ctx)
"arm9tdmi specific commands");
register_command(cmd_ctx, arm9tdmi_cmd, "vector_catch",
handle_arm9tdmi_catch_vectors_command, COMMAND_EXEC,
- "arm9 vector_catch [all|none|reset|undef|swi|pabt|dabt|reserved|irq|fiq] - separate vectors to catch by space");
+ "arm9 vector_catch [all|none|reset|undef|swi|pabt|dabt|irq|fiq] - separate vectors to catch by space");
diff --git a/src/target/arm9tdmi.h b/src/target/arm9tdmi.h
index 28be9b6c..9dfa8863 100644
--- a/src/target/arm9tdmi.h
+++ b/src/target/arm9tdmi.h
@@ -47,7 +47,7 @@ enum arm9tdmi_vector
ARM9TDMI_SWI_VECTOR = 0x04,
ARM9TDMI_PABT_VECTOR = 0x08,
ARM9TDMI_DABT_VECTOR = 0x10,
- ARM9TDMI_RESERVED_VECTOR = 0x20,
+ /* BIT(5) reserved -- must be zero */
ARM9TDMI_IRQ_VECTOR = 0x40,
ARM9TDMI_FIQ_VECTOR = 0x80,
};