diff options
author | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2007-11-27 07:31:20 -0500 |
---|---|---|
committer | Haavard Skinnemoen <hskinnemoen@atmel.com> | 2007-12-07 08:54:40 -0500 |
commit | 8dfe8f29cd371affcc3c6b35658dc4bd95ee7b61 (patch) | |
tree | dc1919ab3638bf01694ad8d23745d76046879cf7 /arch/avr32/kernel/kprobes.c | |
parent | 320516b78bf197fbf7a38ddab09e9dab75741bae (diff) |
[AVR32] Clean up OCD register usage
Generate a new set of OCD register definitions in asm/ocd.h and rename
__mfdr() and __mtdr() to ocd_read() and ocd_write() respectively.
The bitfield definitions are a lot more complete now, and they are
entirely based on bit numbers, not masks. This is because OCD
registers are frequently accessed from assembly code, where bit
numbers are a lot more useful (can be fed directly to sbr, bfins,
etc.)
Bitfields that consist of more than one bit have two definitions:
_START, which indicates the number of the first bit, and _SIZE, which
indicates the number of bits. These directly correspond to the
parameters taken by the bfextu, bfexts and bfins instructions.
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
Diffstat (limited to 'arch/avr32/kernel/kprobes.c')
-rw-r--r-- | arch/avr32/kernel/kprobes.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/avr32/kernel/kprobes.c b/arch/avr32/kernel/kprobes.c index 20b1c9d8f945..799ba89b07a8 100644 --- a/arch/avr32/kernel/kprobes.c +++ b/arch/avr32/kernel/kprobes.c | |||
@@ -70,9 +70,9 @@ static void __kprobes prepare_singlestep(struct kprobe *p, struct pt_regs *regs) | |||
70 | 70 | ||
71 | BUG_ON(!(sysreg_read(SR) & SYSREG_BIT(SR_D))); | 71 | BUG_ON(!(sysreg_read(SR) & SYSREG_BIT(SR_D))); |
72 | 72 | ||
73 | dc = __mfdr(DBGREG_DC); | 73 | dc = ocd_read(DC); |
74 | dc |= DC_SS; | 74 | dc |= 1 << OCD_DC_SS_BIT; |
75 | __mtdr(DBGREG_DC, dc); | 75 | ocd_write(DC, dc); |
76 | 76 | ||
77 | /* | 77 | /* |
78 | * We must run the instruction from its original location | 78 | * We must run the instruction from its original location |
@@ -91,9 +91,9 @@ static void __kprobes resume_execution(struct kprobe *p, struct pt_regs *regs) | |||
91 | 91 | ||
92 | pr_debug("resuming execution at PC=%08lx\n", regs->pc); | 92 | pr_debug("resuming execution at PC=%08lx\n", regs->pc); |
93 | 93 | ||
94 | dc = __mfdr(DBGREG_DC); | 94 | dc = ocd_read(DC); |
95 | dc &= ~DC_SS; | 95 | dc &= ~(1 << OCD_DC_SS_BIT); |
96 | __mtdr(DBGREG_DC, dc); | 96 | ocd_write(DC, dc); |
97 | 97 | ||
98 | *p->addr = BREAKPOINT_INSTRUCTION; | 98 | *p->addr = BREAKPOINT_INSTRUCTION; |
99 | flush_icache_range((unsigned long)p->addr, | 99 | flush_icache_range((unsigned long)p->addr, |
@@ -261,7 +261,7 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) | |||
261 | int __init arch_init_kprobes(void) | 261 | int __init arch_init_kprobes(void) |
262 | { | 262 | { |
263 | printk("KPROBES: Enabling monitor mode (MM|DBE)...\n"); | 263 | printk("KPROBES: Enabling monitor mode (MM|DBE)...\n"); |
264 | __mtdr(DBGREG_DC, DC_MM | DC_DBE); | 264 | ocd_write(DC, (1 << OCD_DC_MM_BIT) | (1 << OCD_DC_DBE_BIT)); |
265 | 265 | ||
266 | /* TODO: Register kretprobe trampoline */ | 266 | /* TODO: Register kretprobe trampoline */ |
267 | return 0; | 267 | return 0; |