Andreas Fritiofson <andreas.fritiofson@gmail.com> I noticed there are a few checks...
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 24 Jul 2009 05:42:45 +0000 (05:42 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Fri, 24 Jul 2009 05:42:45 +0000 (05:42 +0000)
is handled with an early return at the top of the function.

git-svn-id: svn://svn.berlios.de/openocd/trunk@2562 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/target/arm_disassembler.c

index 6c90bd7ed61ec75ad7c54f06c8c592cff6ffaeba..2af07c4ede2ce2add56bd613eb81499ecabfb307 100644 (file)
@@ -3523,8 +3523,6 @@ static int t2ev_load_halfword(uint32_t opcode, uint32_t address,
        if ((opcode & (1 << 23)) == 0) {
                if (rn == 0xf) {
 ldrh_literal:
-                       if (rt == 0xf)
-                               return ERROR_INVALID_ARGUMENTS;
                        immed = opcode & 0xfff;
                        address = thumb_alignpc4(address);
                        if (opcode & (1 << 23))
@@ -3535,8 +3533,6 @@ ldrh_literal:
                                        sign, rt, address);
                        return ERROR_OK;
                }
-               if (rt == 0xf)
-                       return ERROR_INVALID_ARGUMENTS;
                if (op2 == 0) {
                        int rm = opcode & 0xf;
 
@@ -3574,12 +3570,11 @@ ldrh_literal:
        } else {
                if (rn == 0xf)
                        goto ldrh_literal;
-               if (rt != 0x0f) {
-                       immed = opcode & 0xfff;
-                       sprintf(cp, "LDR%sH.W\tr%d, [r%d, #%d]\t; %#6.6x",
-                                       sign, rt, rn, immed, immed);
-                       return ERROR_OK;
-               }
+
+               immed = opcode & 0xfff;
+               sprintf(cp, "LDR%sH.W\tr%d, [r%d, #%d]\t; %#6.6x",
+                               sign, rt, rn, immed, immed);
+               return ERROR_OK;
        }
 
        return ERROR_INVALID_ARGUMENTS;