linux/include/asm-avr32
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
..
arch-at32ap [AVR32] Implement at32_add_device_cf() 2007-10-23 11:20:05 +02:00
mach [PATCH] atmel_serial: Rename at91_register_uart_fns 2006-10-04 10:25:05 -07:00
a.out.h arch: personality independent stack top 2007-07-19 10:04:45 -07:00
addrspace.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
asm.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
atomic.h [AVR32] Fix atomic_add_unless() and atomic_sub_unless() 2007-07-18 20:47:04 +02:00
auxvec.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
bitops.h forbid asm/bitops.h direct inclusion 2007-10-19 11:53:41 -07:00
bug.h Fix WARN_ON() on bitfield ops for all other archs 2007-08-01 20:45:38 -07:00
bugs.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
byteorder.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
cache.h [AVR32] Define ARCH_KMALLOC_MINALIGN to L1_CACHE_BYTES 2007-06-14 18:30:50 +02:00
cachectl.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
cacheflush.h [PATCH] Optimize D-cache alias handling on fork 2006-12-13 09:27:08 -08:00
checksum.h Remove a couple final references to obsolete verify_area(). 2007-02-09 15:01:56 +01:00
cputime.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
current.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
delay.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
device.h Driver core: add dev_archdata to struct device 2006-12-01 14:52:01 -08:00
div64.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
dma-mapping.h AVR32: Fix sg_page breakage 2007-10-24 10:16:02 +02:00
dma.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
elf.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
emergency-restart.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
errno.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
fb.h fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
fcntl.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
futex.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
gpio.h [AVR32] GPIO API implementation 2007-02-09 15:01:58 +01:00
hardirq.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
hw_irq.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
intc.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
io.h Remove dma_cache_(wback|inv|wback_inv) functions 2007-10-17 08:42:57 -07:00
ioctl.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
ioctls.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
ipcbuf.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
irq.h [AVR32] GPIO API implementation 2007-02-09 15:01:58 +01:00
irq_regs.h [PATCH] IRQ: Fix AVR32 breakage 2006-10-11 11:14:14 -07:00
irqflags.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
Kbuild [AVR32] Fix typo in include/asm-avr32/Kbuild 2007-03-07 10:50:27 +01:00
kdebug.h x86: optimize page faults like all other achitectures and kill notifier cruft 2007-10-16 09:42:50 -07:00
kmap_types.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
kprobes.h kprobes: support kretprobe blacklist 2007-10-16 09:43:10 -07:00
linkage.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
local.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
mman.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
mmu.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
mmu_context.h [PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction 2007-05-02 19:27:14 +02:00
module.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
msgbuf.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
mutex.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
namei.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
numnodes.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
ocd.h [AVR32] Clean up OCD register usage 2007-12-07 14:54:40 +01:00
page.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
param.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
pci.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
percpu.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
pgalloc.h [AVR32] Simplify pte_alloc_one{,_kernel} 2007-08-15 16:36:56 +02:00
pgtable-2level.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
pgtable.h [AVR32] Fix bogus pte_page() definition 2007-08-15 16:36:56 +02:00
poll.h Consolidate asm/poll.h 2007-05-11 08:29:34 -07:00
posix_types.h [AVR32] ssize_t should be long, not int 2007-02-09 15:01:59 +01:00
processor.h [AVR32] Follow the rules when dealing with the OCD system 2007-12-07 14:54:46 +01:00
ptrace.h [AVR32] Fix invalid status register bit definitions in asm/ptrace.h 2007-12-07 14:52:33 +01:00
resource.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
scatterlist.h Add CONFIG_DEBUG_SG sg validation 2007-10-22 21:20:03 +02:00
sections.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
semaphore.h kill DECLARE_MUTEX_LOCKED 2007-10-17 08:42:47 -07:00
sembuf.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
setup.h [AVR32] Fix section mismatch .taglist -> .init.text 2007-05-09 09:26:18 +02:00
shmbuf.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
shmparam.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
sigcontext.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
siginfo.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
signal.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
socket.h [NET]: Adding SO_TIMESTAMPNS / SCM_TIMESTAMPNS support 2007-04-25 22:24:21 -07:00
sockios.h [NET]: Introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution 2007-04-25 22:24:04 -07:00
stat.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
statfs.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
string.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
sysreg.h [AVR32] Implement irqflags trace and lockdep support 2007-12-07 14:52:37 +01:00
system.h [AVR32] Clean up OCD register usage 2007-12-07 14:54:40 +01:00
termbits.h lots-of-architectures: enable arbitary speed tty support 2007-07-10 17:51:13 -07:00
termios.h [PATCH] consolidate line discipline number definitions 2007-02-11 10:51:26 -08:00
thread_info.h [AVR32] Follow the rules when dealing with the OCD system 2007-12-07 14:54:46 +01:00
timex.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
tlb.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
tlbflush.h remove unused flush_tlb_pgtables 2007-10-19 11:53:34 -07:00
topology.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
traps.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
types.h remove strict ansi check from __u64 in asm/types.h 2007-10-17 08:42:53 -07:00
uaccess.h [AVR32] Fix compile error with gcc 4.1 2007-04-27 14:21:47 +02:00
ucontext.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00
unaligned.h [AVR32] Remove optimization of unaligned word loads 2007-07-18 20:45:51 +02:00
unistd.h [AVR32] Ignore a few irrelevant syscalls 2007-10-11 13:32:55 +02:00
user.h [PATCH] avr32 architecture 2006-09-26 08:48:54 -07:00