PageRenderTime 26ms CodeModel.GetById 18ms app.highlight 6ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/arm/mach-clps711x/include/mach/entry-macro.S

https://bitbucket.org/sammyz/iscream_thunderc-2.6.35-rebase
Assembly | 58 lines | 49 code | 9 blank | 0 comment | 3 complexity | e4d9dc627c43bff9b8b00e3442b35af4 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
 1/*
 2 * arch/arm/mach-clps711x/include/mach/entry-macro.S
 3 *
 4 * Low-level IRQ helper macros for CLPS711X-based platforms
 5 *
 6 * This file is licensed under  the terms of the GNU General Public
 7 * License version 2. This program is licensed "as is" without any
 8 * warranty of any kind, whether express or implied.
 9 */
10#include <mach/hardware.h>
11#include <asm/hardware/clps7111.h>
12
13		.macro	disable_fiq
14		.endm
15
16		.macro	get_irqnr_preamble, base, tmp
17		.endm
18
19		.macro	arch_ret_to_user, tmp1, tmp2
20		.endm
21
22#if (INTSR2 - INTSR1) != (INTMR2 - INTMR1)
23#error INTSR stride != INTMR stride
24#endif
25
26		.macro	get_irqnr_and_base, irqnr, stat, base, mask
27		mov	\base, #CLPS7111_BASE
28		ldr	\stat, [\base, #INTSR1]
29		ldr	\mask, [\base, #INTMR1]
30		mov	\irqnr, #4
31		mov	\mask, \mask, lsl #16
32		and	\stat, \stat, \mask, lsr #16
33		movs	\stat, \stat, lsr #4
34		bne	1001f
35
36		add	\base, \base, #INTSR2 - INTSR1
37		ldr	\stat, [\base, #INTSR1]
38		ldr	\mask, [\base, #INTMR1]
39		mov	\irqnr, #16
40		mov	\mask, \mask, lsl #16
41		and	\stat, \stat, \mask, lsr #16
42
431001:		tst	\stat, #255
44		addeq	\irqnr, \irqnr, #8
45		moveq	\stat, \stat, lsr #8
46		tst	\stat, #15
47		addeq	\irqnr, \irqnr, #4
48		moveq	\stat, \stat, lsr #4
49		tst	\stat, #3
50		addeq	\irqnr, \irqnr, #2
51		moveq	\stat, \stat, lsr #2
52		tst	\stat, #1
53		addeq	\irqnr, \irqnr, #1
54		moveq	\stat, \stat, lsr #1
55		tst	\stat, #1			@ bit 0 should be set
56		.endm
57
58