MIPS: Netlogic: Optimize EIMR/EIRR accesses in 32-bit
authorJayachandran C <jchandra@broadcom.com>
Mon, 14 Jan 2013 15:11:54 +0000 (15:11 +0000)
committerJohn Crispin <blogic@openwrt.org>
Sat, 16 Feb 2013 23:15:19 +0000 (00:15 +0100)
commit220d9122e8c5a467fdeefc1857e077f29a623bfd
treee5efff5e5df4f3b11f77451412665ad1b4031a59
parentf0cb40e5c384cf2cc4b2b932b61474544ac1fc9a
MIPS: Netlogic: Optimize EIMR/EIRR accesses in 32-bit

Provide functions ack_c0_eirr(), set_c0_eimr(), clear_c0_eimr()
and read_c0_eirr_and_eimr() that do the EIMR and EIRR operations
and update the interrupt handling code to use these functions.
Also, use the EIMR register functions to mask interrupts in the
irq code.

The 64-bit interrupt request and mask registers (EIRR and EIMR) are
accessed when the interrupts are off, and the common operations are
to set or clear a bit in these registers. Using the 64-bit c0 access
functions for these operations is not optimal in 32-bit, because it
will disable/restore interrupts and split/join the 64-bit value during
each register access.

Signed-off-by: Jayachandran C <jchandra@broadcom.com>
Patchwork: http://patchwork.linux-mips.org/patch/4790/
Signed-off-by: John Crispin <blogic@openwrt.org>
arch/mips/include/asm/netlogic/mips-extns.h
arch/mips/netlogic/common/irq.c
arch/mips/netlogic/common/smp.c