diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-24 17:48:24 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-24 17:48:24 -0400 |
commit | b9d8be7828e974f076717f0da608d052440fe192 (patch) | |
tree | d4bc4d3e13f816a76b1a02bde922ee7ad0dbdbd9 /arch/sparc64/kernel/unaligned.c | |
parent | d02f40e81e003be6ddba5c176f2e40ea290c3729 (diff) | |
parent | 1812fd40725c13cf050c29791a6dd35d593eb8d8 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: (40 commits)
[SPARC64]: Update defconfig.
[SPARC64]: Make auxio a real driver.
[PARPORT] sunbpp: Convert to new SBUS device framework.
[Documentation]: Update probing info in sbus_drivers.txt
[SCSI] qlogicpti: Convert to new SBUS device framework.
[SCSI] esp: Fix bug in esp_remove_common.
[NET] sunhme: Kill useless loop over sdevs in quattro_sbus_find().
[NET] myri_sbus: Kill unused next_module struct member.
[NET] myri_sbus: Convert to new SBUS device layer.
[NET] sunqe: Convert to new SBUS driver layer.
[NET] sunbmac: Convert over to new SBUS device framework.
[NET] sunlance: Convert to new SBUS driver framework.
[NET] sunhme: Convert to new SBUS driver framework.
[NET] sunhme: Kill __sparc__ and __sparc_v9__ ifdefs.
[SCSI] sparc: Port esp to new SBUS driver layer.
[SOUND] sparc: Port amd7930 to new SBUS device layer.
[SBUS]: Rewrite and plug into of_device framework.
[SPARC]: Port of_device layer and make ebus use it.
[SPARC]: Port sparc64 in-kernel device tree code to sparc32.
[SPARC64]: Add of_device layer and make ebus/isa use it.
...
Diffstat (limited to 'arch/sparc64/kernel/unaligned.c')
-rw-r--r-- | arch/sparc64/kernel/unaligned.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c index 001e8518331f..bb2d68577855 100644 --- a/arch/sparc64/kernel/unaligned.c +++ b/arch/sparc64/kernel/unaligned.c | |||
@@ -279,12 +279,21 @@ static void kernel_mna_trap_fault(void) | |||
279 | 279 | ||
280 | asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn) | 280 | asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn) |
281 | { | 281 | { |
282 | static unsigned long count, last_time; | ||
282 | enum direction dir = decode_direction(insn); | 283 | enum direction dir = decode_direction(insn); |
283 | int size = decode_access_size(insn); | 284 | int size = decode_access_size(insn); |
284 | 285 | ||
285 | current_thread_info()->kern_una_regs = regs; | 286 | current_thread_info()->kern_una_regs = regs; |
286 | current_thread_info()->kern_una_insn = insn; | 287 | current_thread_info()->kern_una_insn = insn; |
287 | 288 | ||
289 | if (jiffies - last_time > 5 * HZ) | ||
290 | count = 0; | ||
291 | if (count < 5) { | ||
292 | last_time = jiffies; | ||
293 | count++; | ||
294 | printk("Kernel unaligned access at TPC[%lx]\n", regs->tpc); | ||
295 | } | ||
296 | |||
288 | if (!ok_for_kernel(insn) || dir == both) { | 297 | if (!ok_for_kernel(insn) || dir == both) { |
289 | printk("Unsupported unaligned load/store trap for kernel " | 298 | printk("Unsupported unaligned load/store trap for kernel " |
290 | "at <%016lx>.\n", regs->tpc); | 299 | "at <%016lx>.\n", regs->tpc); |