linux/arch
Haavard Skinnemoen 2507bc1338 [AVR32] Follow the rules when dealing with the OCD system
The current debug trap handling code does a number of things that are
illegal according to the AVR32 Architecture manual. Most importantly,
it may try to schedule from Debug Mode, thus clearing the D bit, which
can lead to "undefined behaviour".

It seems like this works in most cases, but several people have
observed somewhat unstable behaviour when debugging programs,
including soft lockups. So there's definitely something which is not
right with the existing code.

The new code will never schedule from Debug mode, it will always exit
Debug mode with a "retd" instruction, and if something not running in
Debug mode needs to do something debug-related (like doing a single
step), it will enter debug mode through a "breakpoint" instruction.
The monitor code will then return directly to user space, bypassing
its own saved registers if necessary (since we don't actually care
about the trapped context, only the one that came before.)

This adds three instructions to the common exception handling code,
including one branch. It does not touch super-hot paths like the TLB
miss handler.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
2007-12-07 14:54:46 +01:00
..
alpha alpha: fix sg_page breakage 2007-11-27 09:19:39 +01:00
arm Merge branches 'at91-fixes' and 'pxa-fixes' 2007-11-29 20:57:19 +00:00
avr32 [AVR32] Follow the rules when dealing with the OCD system 2007-12-07 14:54:46 +01:00
blackfin Blackfin arch: fix bug when enable uart1 with uart0 disabled => no initial console 2007-11-21 17:04:41 +08:00
cris ide: move CONFIG_IDE_ETRAX to drivers/ide/Kconfig 2007-11-27 21:35:55 +01:00
frv FRV: arrange things such that BRA can reach from the trap table 2007-11-29 09:24:54 -08:00
h8300 Kbuild/doc: fix links to Documentation files 2007-10-30 14:26:30 -07:00
ia64 Add IORESOUCE_BUSY flag for System RAM 2007-11-14 18:45:39 -08:00
m32r m32r: Update sys_rt_sigsuspend 2007-11-28 01:24:04 +09:00
m68k m68k: export atari_keyb_init 2007-11-26 19:15:31 -08:00
m68knommu m68knommu: mark mem init functions as __init 2007-10-23 20:45:44 -07:00
mips Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus 2007-12-06 09:43:26 -08:00
parisc [PARISC] print more than one character at a time for pdc console 2007-12-06 09:32:15 -08:00
powerpc [POWERPC] Fix swapper_pg_dir size when CONFIG_PTE_64BIT=y on FSL_BOOKE 2007-12-06 13:11:04 -06:00
ppc [POWERPC] Remove xmon from ml300 and ml403 defconfig in arch/ppc 2007-12-03 10:08:53 +11:00
s390 [S390] Make sure the restore psw masks are initialized. 2007-12-04 16:09:58 +01:00
sh sh: Support PCI IO access of SH7780 base boards. 2007-11-30 12:36:13 +09:00
sh64 sh64: Kill off duplicate includes. 2007-11-05 12:18:17 +09:00
sparc [SPARC]: Add missing of_node_put 2007-12-05 05:38:00 -08:00
sparc64 [SPARC64]: Update defconfig. 2007-12-05 05:38:01 -08:00
um no need to mess with KBUILD_CFLAGS on uml-i386 anymore 2007-12-05 09:25:20 -08:00
v850 spelling fixes: arch/v850/ 2007-10-20 01:24:05 +02:00
x86 Pull suspend-2.6.24 into release branch 2007-12-06 16:26:52 -05:00
xtensa Kbuild/doc: fix links to Documentation files 2007-10-30 14:26:30 -07:00