Home | History | Annotate | Download | only in xscale
History log of /src/sys/arch/arm/xscale/i80200_irq.S
RevisionDateAuthorComments
 1.19  21-Nov-2020  skrll Adjust egister usage so that r4 and r5 are preserved as cur{cpu,lwp}
respectively as required by the change to make ASTs operate per-LWP
rather than per-CPU. DO_AST_AND_RESTORE_ALIGNMENT_FAULTS expects this.

XXX untested
 1.18  12-Jul-2018  maxv branches: 1.18.12;
Remove the kernel PMC code. Sent yesterday on tech-kern@.

This change:

* Removes "options PERFCTRS", the associated includes, and the associated
ifdefs. In doing so, it removes several XXXSMPs in the MI code, which is
good.

* Removes the PMC code of ARM XSCALE.

* Removes all the pmc.h files. They were all empty, except for ARM XSCALE.

* Reorders the x86 PMC code not to rely on the legacy pmc.h file. The
definitions are put in sysarch.h.

* Removes the kern/sys_pmc.c file, and along with it, the sys_pmc_control
and sys_pmc_get_info syscalls. They are marked as OBSOL in kern,
netbsd32 and rump.

* Removes the pmc_evid_t and pmc_ctr_t types.

* Removes all the associated man pages. The sets are marked as obsolete.
 1.17  18-Aug-2013  matt branches: 1.17.28; 1.17.30;
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.16  27-Apr-2008  matt branches: 1.16.34; 1.16.44; 1.16.50;
Merge kernel changes in matt-armv6 to HEAD.
 1.15  06-Jan-2008  matt branches: 1.15.6; 1.15.8; 1.15.10;
Truly kill current_intr_depth once and for all.
 1.14  09-Mar-2007  thorpej branches: 1.14.8; 1.14.16; 1.14.20; 1.14.22; 1.14.28; 1.14.34;
Rewrite the ARM mutex implementation to be of the simple-mutex variety.
Because pre-v6 ARM lacks support for an atomic compare-and-swap, we
implement _lock_cas() as a restartable atomic squence that is checked
in the IRQ handler right before AST processing. (This is safe because,
for all practical purposes, there are no SMP pre-v6 ARM systems.)

This can serve as a model for other non-MP platforms that lack the
necessary atomic operations for mutexes (SuperH, for example).

Upshots of this change:
- kmutex_t is now down to 8 bytes on ARM; about as good as we can get.
- ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.

The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK.
That is left as an exercise for the port maintainer.

Reviewed and tested by Matt Thomas.
 1.13  11-Dec-2005  christos branches: 1.13.26;
merge ktrace-lwp.
 1.12  31-May-2005  chs branches: 1.12.2;
remove vestigal {,e}intr{names,cnt} symbols now that vmstat doesn't need them.
 1.11  05-Nov-2003  scw Enable/Restore alignment fault state on interrupt handler entry/exit.
 1.10  02-Jan-2003  thorpej branches: 1.10.2;
Garbage-collect prev_intr_depth; nothing uses it.
 1.9  25-Oct-2002  briggs Restore .Lpmc_intr_return -- ben only removed one of two references to it.
 1.8  21-Oct-2002  bjh21 Pull down rev 1.7.2.1 [must be careful which branch I commit to!]:
Reinstate .Lextirq_return: it was used in two places, and I only removed one
of them.
 1.7  14-Oct-2002  bjh21 branches: 1.7.2;
Continue the " - . - 8" purge. Specifically:

add rd, pc, #foo - . - 8 -> adr rd, foo
ldr rd, [pc, #foo - . - 8] -> ldr rd, foo

Also, when saving the return address for a function pointer call, use
"mov lr, pc" just before the call unless the return address is somewhere
other than just after the call site.

Finally, a few obvious little micro-optimisations like using LDR directly
rather than ADR followed by LDR, and loading directly into PC rather than
bouncing via R0.
 1.6  17-Aug-2002  thorpej Use correct-for-ELF local labels.
 1.5  14-Aug-2002  thorpej Use cpsr_c rather then cpsr_all where appropriate.
 1.4  07-Aug-2002  briggs Implement pmc(9) -- An interface to hardware performance monitoring
counters. These counters do not exist on all CPUs, but where they
do exist, can be used for counting events such as dcache misses that
would otherwise be difficult or impossible to instrument by code
inspection or hardware simulation.

pmc(9) is meant to be a general interface. Initially, the Intel XScale
counters are the only ones supported.
 1.3  29-Jul-2002  thorpej Clean up some comments.
 1.2  25-Jun-2002  thorpej * Interrupt status is in cp13.4, not cp13.1 (D'oh!)
* Fix an inverted test.
 1.1  24-Jan-2002  thorpej branches: 1.1.2; 1.1.4; 1.1.12; 1.1.14;
Add an IRQ vector to be shared by all i80200 applications. This
consults the interrupt source bits in the i80200 ICU and calls
a board-specific external IRQ dispatcher if an external IRQ is
pending.
 1.1.14.2  11-Nov-2002  he Pull up revision 1.3 (requested by thorpej in ticket #579):
Clean up some comments.
 1.1.14.1  25-Jun-2002  lukem Pull up revision 1.2 (requested by thorpej in ticket #364):
* Interrupt status is in cp13.4, not cp13.1 (D'oh!)
* Fix an inverted test.
 1.1.12.2  30-Aug-2002  gehenna catch up with -current.
 1.1.12.1  16-Jul-2002  gehenna catch up with -current.
 1.1.4.9  03-Jan-2003  thorpej Sync with HEAD.
 1.1.4.8  25-Oct-2002  thorpej Sync with HEAD.
 1.1.4.7  22-Oct-2002  thorpej Sync with HEAD.
 1.1.4.6  18-Oct-2002  nathanw Catch up to -current.
 1.1.4.5  19-Aug-2002  thorpej Partial (ARM only) sync with trunk -- significant performance improvements
for XScale-based systems.
 1.1.4.4  13-Aug-2002  nathanw Catch up to -current.
 1.1.4.3  01-Aug-2002  nathanw Catch up to -current.
 1.1.4.2  28-Feb-2002  nathanw Catch up to -current.
 1.1.4.1  24-Jan-2002  nathanw file i80200_irq.S was added on branch nathanw_sa on 2002-02-28 04:07:44 +0000
 1.1.2.3  06-Sep-2002  jdolecek sync kqueue branch with HEAD
 1.1.2.2  11-Feb-2002  jdolecek Sync w/ -current.
 1.1.2.1  24-Jan-2002  jdolecek file i80200_irq.S was added on branch kqueue on 2002-02-11 20:07:22 +0000
 1.7.2.1  21-Oct-2002  bjh21 Reinstate .Lextirq_return: it was used in two places, and I only removed one
of them.
 1.10.2.4  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.10.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.10.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.10.2.1  03-Aug-2004  skrll Sync with HEAD
 1.12.2.2  21-Jan-2008  yamt sync with head
 1.12.2.1  03-Sep-2007  yamt sync with head.
 1.13.26.1  12-Mar-2007  rmind Sync with HEAD.
 1.14.34.1  08-Jan-2008  bouyer Sync with HEAD
 1.14.28.1  18-Feb-2008  mjf Sync with HEAD.
 1.14.22.3  09-Jan-2008  matt sync with HEAD
 1.14.22.2  09-Nov-2007  matt Make all the evbarm kernels build again. Fix lossage from rebase.
 1.14.22.1  29-Aug-2007  matt Adapt to everything in cpu_info
 1.14.20.1  20-Jan-2008  chris Sync to HEAD.
 1.14.16.1  28-Feb-2008  rjs Sync with HEAD.
 1.14.8.1  18-Apr-2007  thorpej Remove _lock_cas() in favor of atomic_cas_32().
 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.50.1  28-Aug-2013  rmind sync with head
 1.16.44.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.16.34.1  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.17.30.1  10-Jun-2019  christos Sync with HEAD
 1.17.28.1  28-Jul-2018  pgoyette Sync with HEAD
 1.18.12.1  14-Dec-2020  thorpej Sync w/ HEAD.

RSS XML Feed