diff options
| -rw-r--r-- | arch/blackfin/kernel/pseudodbg.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/arch/blackfin/kernel/pseudodbg.c b/arch/blackfin/kernel/pseudodbg.c index e57ce2f64bfe..db85bc94334e 100644 --- a/arch/blackfin/kernel/pseudodbg.c +++ b/arch/blackfin/kernel/pseudodbg.c | |||
| @@ -158,7 +158,7 @@ bool execute_pseudodbg_assert(struct pt_regs *fp, unsigned int opcode) | |||
| 158 | bool execute_pseudodbg(struct pt_regs *fp, unsigned int opcode) | 158 | bool execute_pseudodbg(struct pt_regs *fp, unsigned int opcode) |
| 159 | { | 159 | { |
| 160 | int grp, fn, reg; | 160 | int grp, fn, reg; |
| 161 | long value; | 161 | long value, value1; |
| 162 | 162 | ||
| 163 | if ((opcode & 0xFF000000) != PseudoDbg_opcode) | 163 | if ((opcode & 0xFF000000) != PseudoDbg_opcode) |
| 164 | return false; | 164 | return false; |
| @@ -168,11 +168,24 @@ bool execute_pseudodbg(struct pt_regs *fp, unsigned int opcode) | |||
| 168 | fn = ((opcode >> PseudoDbg_fn_bits) & PseudoDbg_fn_mask); | 168 | fn = ((opcode >> PseudoDbg_fn_bits) & PseudoDbg_fn_mask); |
| 169 | reg = ((opcode >> PseudoDbg_reg_bits) & PseudoDbg_reg_mask); | 169 | reg = ((opcode >> PseudoDbg_reg_bits) & PseudoDbg_reg_mask); |
| 170 | 170 | ||
| 171 | if (!fix_up_reg(fp, &value, grp, reg)) | 171 | if (fn == 3 && (reg == 0 || reg == 1)) { |
| 172 | return false; | 172 | if (!fix_up_reg(fp, &value, 4, 2 * reg)) |
| 173 | return false; | ||
| 174 | if (!fix_up_reg(fp, &value1, 4, 2 * reg + 1)) | ||
| 175 | return false; | ||
| 173 | 176 | ||
| 174 | pr_notice("DBG %s = %08lx\n", get_allreg_name(grp, reg), value); | 177 | pr_notice("DBG A%i = %02lx%08lx\n", reg, value & 0xFF, value1); |
| 178 | fp->pc += 2; | ||
| 179 | return true; | ||
| 175 | 180 | ||
| 176 | fp->pc += 2; | 181 | } else if (fn == 0) { |
| 177 | return true; | 182 | if (!fix_up_reg(fp, &value, grp, reg)) |
| 183 | return false; | ||
| 184 | |||
| 185 | pr_notice("DBG %s = %08lx\n", get_allreg_name(grp, reg), value); | ||
| 186 | fp->pc += 2; | ||
| 187 | return true; | ||
| 188 | } | ||
| 189 | |||
| 190 | return false; | ||
| 178 | } | 191 | } |
