Home | History | Annotate | Download | only in arm32
History log of /src/sys/arch/arm/arm32/exception.S
RevisionDateAuthorComments
 1.26  21-Nov-2020  skrll Sprinkle some comments about ENABLE_ALIGNMENT_FAULTS leaving curcpu in r4
and curlwp in r5
 1.25  11-Aug-2019  skrll branches: 1.25.8;
Trailing whitespace
 1.24  07-Jul-2017  chs branches: 1.24.6;
split PUSHFRAMEINSVC into two pieces so that we can insert some additional
instructions in the middle in undefinedinstruction_bounce, namely to add
some additional space on the stack before the trapframe for undefineds from
SVC mode. this extra space allows dtrace to emulate a "push" instruction.
the initial version was from me and some improvements were from nick.
 1.23  21-Jun-2015  matt Remove duplicate ASEND(undefined_entry)
 1.22  13-Mar-2014  matt branches: 1.22.6;
Add clrex when we get an abort.
Simplify undefined_entry to use the undefined stack to do transfer to the
undefined handler.
 1.21  05-Mar-2014  matt push/pop unsaved registers before using printf.
 1.20  02-Dec-2013  joerg Don't use cpsr_all/spsr_all with mrs, it doesn't take a mask.
 1.19  18-Aug-2013  matt Move parts of cpu.h that are not needed by MI code in <arm/locore.h>
Don't include <machine/cpu.h> or <machine/frame.h>, use <arm/locore.h>
Use <arm/asm.h> instead of <machine/arm.h>
 1.18  12-Sep-2012  matt branches: 1.18.2;
Make sure the handler addresses are 32-bit aligned.
 1.17  29-Aug-2012  matt branches: 1.17.2;
Don't use locations in .data to store exception temporaries, use decidicated
space in cpu_info instead. This also moves undefined_handler_address into
cpu_info as well.
Use the new armreg* inlines for getting TPIDRPRW register.
Add MULTIPROCESSOR version of CPU_INFO_FOREACH
 1.16  27-Apr-2008  matt branches: 1.16.18; 1.16.34; 1.16.42;
Merge kernel changes in matt-armv6 to HEAD.
 1.15  19-Jan-2008  chris branches: 1.15.6; 1.15.8; 1.15.10;
Remove arm support for IPKDB.

It hasn't worked since arm was broken out from arm32 in Jan 2001, and
no-one has noticed or cared to fix it.
 1.14  11-Dec-2005  christos branches: 1.14.46; 1.14.50; 1.14.52; 1.14.58; 1.14.66;
merge ktrace-lwp.
 1.13  31-Oct-2003  scw branches: 1.13.16;
Overhaul arm32's abort handlers:

- Assume a permission fault is always the result of an attempted
write, so no need to disassemble the opcode.
(as discussed with Richard Earnshaw/Jason Thorpe a week or two ago)

- Split out non-MMU data aborts into separate functions, and deal
correctly with XScale imprecise aborts. Specifically, the old code
made no attempt to handle the double abort faults which can occur
as a result of two consecutive external (imprecise) aborts. This
was easy to provoke by read(2)ing from a /dev/mem offset which caused
an external abort. With the old code, this would bring the system
down instantly, with little clue as to why. (hint: tf_spsr held
PSR_ABT32_MODE...)

- Re-write badaddr_read() to use pcb_onfault instead of adding extra
overhead to data_abort_handler(). A side effect of this is that it
now benefits from the XScale double abort recovery.

- Invoke the cpu-specific prefetch/data abort fixup routines only if
the host cpu actually needs it. On other cpus, the code is optimised
away.

- Sprinkle __predict_{false,true} in all the right places.

- G/C some excess debugging baggage.
 1.12  30-Oct-2003  scw Move the alignment fault enable/disable code into macroes to avoid
needless duplication.

Additionally, merge AST handling into the same code.

exception.S and the generic irq_dispatch.S routines have been updated
to use the macroes.

XXX: I have patches for the non-generic IRQ dispatch routines, but they
need testing by someone with hardware.
 1.11  26-Oct-2003  scw Assume that if curpcb is NULL, we're already running with alignment
faults enabled.
 1.10  25-Oct-2003  scw Skip the alignment fault enabling code if we came from SVC mode. It's
already enabled in this case.
 1.9  25-Oct-2003  scw Enable alignment faults on arm32 for both kernel and userland.

If COMPAT_15 and EXEC_AOUT are defined, support per-process
alignment checking where AFLTs are always enabled when running
kernel code and userland ELF binaries, and dynamically disabled/
enabled when switching to/from a.out binaries. This is necessary
in order to execute older a.out binaries, where gcc made
deliberate use of misaligned loads under certain circumstances.
 1.8  06-Jan-2003  wiz branches: 1.8.2;
interrupt with two rs.
 1.7  13-Oct-2002  bjh21 Instead of "add rd, pc, #foo - . - 8", use either "adr rd, foo" or (where
appropriate) "mov lr, pc". This makes things slightly less confusing and
ugly.
 1.6  15-Aug-2002  briggs * Use local label names (.Lfoo vs. (Lfoo or foo))
* When moving from cpsr, use "cpsr" instead of "cpsr_all" (which is
provided, but doesn't make sense since mrs doesn't support fields
like msr does).
 1.5  17-Jan-2002  bjh21 branches: 1.5.8;
Separate out syscall() out into three parts:
swi_handler() does stuff that all SWIs will need, then calls
curproc->p_emul->e_syscall.
syscall() handles native NetBSD system calls.
linux_syscall() handles Linux system calls.
 1.4  14-Jan-2002  bjh21 Simplify SWI entry: syscall() now extracts the SWI comment field itself.
 1.3  20-Dec-2001  thorpej * Share a common vector page between arm26 and arm32.
* Use a common set of exception handlers for all arm32 platforms.
* New FIQ framework based on discussions with Ben Harris, shared
between arm26 and arm32.
 1.2  28-Nov-2001  thorpej - Garbage-collect some unused cruft.
- When processing ASTs, restore interrupts *after* clearing astpending.
 1.1  28-Jul-2001  chris branches: 1.1.2; 1.1.8;
Move the generic arm32 files into arm/arm32 from arm32/arm32, tested kernel builds on cats and riscpc.
 1.1.8.6  07-Jan-2003  thorpej Sync with HEAD.
 1.1.8.5  18-Oct-2002  nathanw Catch up to -current.
 1.1.8.4  19-Aug-2002  thorpej Partial (ARM only) sync with trunk -- significant performance improvements
for XScale-based systems.
 1.1.8.3  28-Feb-2002  nathanw Catch up to -current.
 1.1.8.2  08-Jan-2002  nathanw Catch up to -current.
 1.1.8.1  28-Jul-2001  nathanw file exception.S was added on branch nathanw_sa on 2002-01-08 00:23:08 +0000
 1.1.2.5  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.2.4  11-Feb-2002  jdolecek Sync w/ -current.
 1.1.2.3  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.1.2.2  03-Aug-2001  lukem update to -current
 1.1.2.1  28-Jul-2001  lukem file exception.S was added on branch kqueue on 2001-08-03 04:10:58 +0000
 1.5.8.1  30-Aug-2002  gehenna catch up with -current.
 1.8.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1  03-Aug-2004  skrll Sync with HEAD
 1.13.16.1  21-Jan-2008  yamt sync with head
 1.14.66.1  20-Jan-2008  bouyer Sync with HEAD
 1.14.58.1  18-Feb-2008  mjf Sync with HEAD.
 1.14.52.2  23-Mar-2008  matt sync with HEAD
 1.14.52.1  28-Aug-2007  matt #include "assym.h" first!
 1.14.50.1  20-Jan-2008  chris Sync to HEAD.
 1.14.46.1  28-Feb-2008  rjs Sync with HEAD.
 1.15.10.1  16-May-2008  yamt sync with head.
 1.15.8.1  18-May-2008  yamt sync with head.
 1.15.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.16.42.1  28-Nov-2012  matt Merge improved arm support (especially Cortex) from HEAD
including OMAP and BCM53xx support.
 1.16.34.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.16.34.1  30-Oct-2012  yamt sync with head
 1.16.18.2  24-Mar-2014  matt Use the improved undefined method from HEAD
 1.16.18.1  15-Feb-2014  matt Merge armv7 support from HEAD, specifically support for the BCM5301X
and BCM56340 evbarm kernels.
 1.17.2.3  03-Dec-2017  jdolecek update from HEAD
 1.17.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.17.2.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.18.2.2  18-May-2014  rmind sync with head
 1.18.2.1  28-Aug-2013  rmind sync with head
 1.22.6.2  28-Aug-2017  skrll Sync with HEAD
 1.22.6.1  22-Sep-2015  skrll Sync with HEAD
 1.24.6.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.25.8.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed