linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: u.kleine-koenig@pengutronix.de (Uwe Kleine-König)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/13] ARM: LPC32XX: printascii() output and irq support functions
Date: Wed, 3 Feb 2010 17:50:25 +0100	[thread overview]
Message-ID: <20100203165025.GM11354@pengutronix.de> (raw)
In-Reply-To: <1264643011-17390-12-git-send-email-wellsk40@gmail.com>

Hi Kevin,

> +	.macro	disable_fiq
> +	.endm
> +
> +	.macro  get_irqnr_preamble, base, tmp
> +	.endm
> +
> +	.macro  arch_ret_to_user, tmp1, tmp2
> +	.endm
> +
> +/*
> + * Return IRQ number in irqnr. Also return processor Z flag status in CPSR
> + * as set if an interrupt is pending.
> + */
> +	.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
> +	/* Get MIC status first */
> +	ldr	\base, =IO_ADDRESS(MIC_BASE)
> +	ldr	\irqstat, [\base, #INTC_STAT]
> +	and	\irqstat, \irqstat, #0xFFFFFFFC
> +	mov	\tmp, #0
> +
> +	/* Drop through to SIC1 or SIC2 if MIC is not pending */
> +	cmp	\irqstat, #0
> +	bne	1000f
> +
> +	/* SIC1 interrupts start at offset 32 */
> +	ldr	\base, =IO_ADDRESS(SIC1_BASE)
> +	ldr	\irqstat, [\base, #INTC_STAT]
> +	mov	\tmp, #32
> +
> +	/* Drop through to SIC2 if SIC1 is not pending */
> +	cmp	\irqstat, #0
> +	bne	1000f
> +
> +	/* SIC2 interrupts start at offset 64 */
> +	ldr	\base, =IO_ADDRESS(SIC2_BASE)
> +	ldr	\irqstat, [\base, #INTC_STAT]
> +	mov	\tmp, #64
> +
> +	/* Safety check only, exit if no status on MIC, SIC1, SIC2 */
> +	cmp	\irqstat, #0
> +	beq	1001f
> +
> +1000:
> +	/* Returns an pending interrupt between 0 and 95 */
> +	clz	\irqnr, \irqstat
> +	rsb	\irqnr, \irqnr, #31
> +	add	\irqnr, \irqnr, \tmp
> +
> +1001:
> +	teq	\irqstat, #0
> +	.endm
> +
> +	.macro	irq_prio_table
> +	.endm

You could make this easier by only handling MIC(?) interrupts and make
SIC1 and SIC2 use a chained handler.  Then you can use
get_irqnr_preamble for microoptimisation.

Best regards
Uwe

-- 
Pengutronix e.K.                              | Uwe Kleine-K?nig            |
Industrial Linux Solutions                    | http://www.pengutronix.de/  |

  reply	other threads:[~2010-02-03 16:50 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-28  1:43 LPC32XX architecture files (updated) wellsk40 at gmail.com
2010-01-28  1:43 ` [PATCH 01/13] i2c_pnx: Added Kconfig support for the LCP32XX wellsk40 at gmail.com
2010-01-28  1:43 ` [PATCH 02/13] pnx4008_wdt: Added Kconfig support for the LPC32XX wellsk40 at gmail.com
2010-01-28  1:43 ` [PATCH 03/13] amba clcd: Swapped CTRL/IENB registers for LCP32XX wellsk40 at gmail.com
2010-01-28  1:43 ` [PATCH 04/13] ARM: LPC32XX arch support in Kconfig and Makefile wellsk40 at gmail.com
2010-02-03 10:31   ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 05/13] ARM: LPC32XX: arch Kconfig, plat Kconfig, and makefiles wellsk40 at gmail.com
2010-02-03 10:51   ` Uwe Kleine-König
2010-02-03 11:26     ` Russell King - ARM Linux
2010-02-03 13:57       ` Uwe Kleine-König
2010-02-03 15:02         ` Russell King - ARM Linux
2010-02-03 18:01     ` Kevin Wells
2010-02-03 18:56       ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 06/13] ARM: LPC32XX: Core architecture files wellsk40 at gmail.com
2010-01-28 17:58   ` H Hartley Sweeten
2010-01-28 19:54     ` Kevin Wells
2010-02-03 10:54     ` Uwe Kleine-König
2010-02-03 18:05       ` Kevin Wells
2010-02-03 15:55   ` Uwe Kleine-König
2010-02-03 18:43     ` Kevin Wells
2010-02-03 20:40       ` Uwe Kleine-König
2010-02-03 21:58         ` Kevin Wells
2010-02-04  8:17           ` Uwe Kleine-König
2010-02-08  9:09     ` [PATCH 1/3] gpiolib: make names array and its values const Uwe Kleine-König
2010-02-08  9:37       ` Baruch Siach
2010-02-08  9:43         ` Uwe Kleine-König
2010-02-24 10:35       ` Uwe Kleine-König
2010-03-22 20:47       ` Uwe Kleine-König
2010-02-08  9:09     ` [PATCH 2/3] gpiolib: a gpio is unsigned, so use %u to print it Uwe Kleine-König
2010-02-08  9:09     ` [PATCH 3/3] gpiolib: document that names can contain printk format specifiers Uwe Kleine-König
2010-02-08  9:16       ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 07/13] ARM: LPC32XX: common architecture functions and structures wellsk40 at gmail.com
2010-02-03 16:01   ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 08/13] ARM: LPC32XX: clock tree support wellsk40 at gmail.com
2010-01-28 17:07   ` Rabin Vincent
2010-01-28 19:51     ` Kevin Wells
2010-02-03 16:32   ` Uwe Kleine-König
2010-02-03 18:51     ` Kevin Wells
2010-02-03 20:20       ` Uwe Kleine-König
2010-02-05 16:48         ` Kevin Wells
2010-02-05 19:45           ` Russell King - ARM Linux
2010-01-28  1:43 ` [PATCH 09/13] ARM: LPC32XX: power and event management wellsk40 at gmail.com
2010-02-03 16:44   ` Uwe Kleine-König
2010-02-03 19:03     ` Kevin Wells
2010-01-28  1:43 ` [PATCH 10/13] ARM: LPC32XX: Phytec PHY3250 platform support file wellsk40 at gmail.com
2010-02-03 16:46   ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 11/13] ARM: LPC32XX: printascii() output and irq support functions wellsk40 at gmail.com
2010-02-03 16:50   ` Uwe Kleine-König [this message]
2010-02-03 18:57     ` Kevin Wells
2010-02-03 20:49       ` Uwe Kleine-König
2010-01-28  1:43 ` [PATCH 12/13] ARM: LPC32XX: architecture header files wellsk40 at gmail.com
2010-02-03 17:07   ` Uwe Kleine-König
2010-02-03 19:20     ` Kevin Wells
2010-02-03 20:44       ` Uwe Kleine-König
2010-02-03 21:34       ` Russell King - ARM Linux
2010-02-03 22:06         ` Kevin Wells
2010-01-28  1:43 ` [PATCH 13/13] ARM: LPC32XX: Phytec PHY3250 default kernel config (ramdisk) wellsk40 at gmail.com
2010-01-28 11:16 ` LPC32XX architecture files (updated) Luotao Fu
2010-01-28 19:50   ` Kevin Wells
2010-01-28 19:06 ` Wolfram Sang
2010-01-28 19:58   ` Kevin Wells

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100203165025.GM11354@pengutronix.de \
    --to=u.kleine-koenig@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).