When using gdb on the kernel, I've found it helpful to allow misaligned exceptions to be emulated instead of being intercepted by gdb. The following patch does this. But is there a better way? Perhaps a config.in option? Or is this a case of treating the symptom? Maybe there are far too many altogether. The network stack seems to be littered with them--is skbuf alignment bad or something? Ouch, I just looked and after a couple of days there have been a lot! This machine is running with nfs root, so every time you breathe there's a lot of network I/O. What kind of "unaligned accesses" counts are others seeing? / # cat /proc/cpuinfo cpu : MIPS cpu model : RC32300 V0.0 system type : IDT 79S334 BogoMIPS : 149.91 byteorder : little endian unaligned accesses : 329630 wait instruction : no microsecond timers : no extra interrupt vector : yes hardware watchpoint : yes VCED exceptions : not available VCEI exceptions : not available / # uptime 2:07pm up 1 day, 21:07, load average: 0.00, 0.00, 0.00 Quinn
diff -bpBuN -r -X - linux-sgi-cvs/arch/mips/kernel/gdb-stub.c linux+4/arch/mips/kernel/gdb-stub.c --- linux-sgi-cvs/arch/mips/kernel/gdb-stub.c Sun Dec 3 21:04:09 2000 +++ linux+4/arch/mips/kernel/gdb-stub.c Mon Feb 26 14:56:05 2001 @@ -399,8 +399,11 @@ void set_debug_traps(void) unsigned char c; save_and_cli(flags); - for (ht = hard_trap_info; ht->tt && ht->signo; ht++) + for (ht = hard_trap_info; ht->tt && ht->signo; ht++) { + /* let the emulator handle adel and ades */ + if (ht->tt == 4 || ht->tt == 5) continue; set_except_vector(ht->tt, trap_low); + } /* * In case GDB is started before us, ack any packets