Blame view

kernel/linux-rt-4.4.41/arch/arm/include/asm/hardware/entry-macro-iomd.S 5.79 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
  /*
   * arch/arm/include/asm/hardware/entry-macro-iomd.S
   *
   * Low-level IRQ helper macros for IOC/IOMD based platforms
   *
   * This file is licensed under  the terms of the GNU General Public
   * License version 2. This program is licensed "as is" without any
   * warranty of any kind, whether express or implied.
   */
  
  /* IOC / IOMD based hardware */
  #include <asm/hardware/iomd.h>
  
  		.macro	get_irqnr_and_base, irqnr, irqstat, base, tmp
  		ldrb	\irqstat, [\base, #IOMD_IRQREQB]	@ get high priority first
  		ldr	\tmp, =irq_prio_h
  		teq	\irqstat, #0
  #ifdef IOMD_BASE
  		ldreqb	\irqstat, [\base, #IOMD_DMAREQ]	@ get dma
  		addeq	\tmp, \tmp, #256		@ irq_prio_h table size
  		teqeq	\irqstat, #0
  		bne	2406f
  #endif
  		ldreqb	\irqstat, [\base, #IOMD_IRQREQA]	@ get low priority
  		addeq	\tmp, \tmp, #256		@ irq_prio_d table size
  		teqeq	\irqstat, #0
  #ifdef IOMD_IRQREQC
  		ldreqb	\irqstat, [\base, #IOMD_IRQREQC]
  		addeq	\tmp, \tmp, #256		@ irq_prio_l table size
  		teqeq	\irqstat, #0
  #endif
  #ifdef IOMD_IRQREQD
  		ldreqb	\irqstat, [\base, #IOMD_IRQREQD]
  		addeq	\tmp, \tmp, #256		@ irq_prio_lc table size
  		teqeq	\irqstat, #0
  #endif
  2406:		ldrneb	\irqnr, [\tmp, \irqstat]	@ get IRQ number
  		.endm
  
  /*
   * Interrupt table (incorporates priority).  Please note that we
   * rely on the order of these tables (see above code).
   */
  		.align	5
  irq_prio_h:	.byte	 0, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	12, 8, 9, 8,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	14,14,14,14,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	15,15,15,15,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  		.byte	13,13,13,13,10,10,10,10,11,11,11,11,10,10,10,10
  #ifdef IOMD_BASE
  irq_prio_d:	.byte	 0,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	20,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	23,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	22,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  		.byte	21,16,17,16,18,16,17,16,19,16,17,16,18,16,17,16
  #endif
  irq_prio_l:	.byte	 0, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
  		.byte	 4, 0, 1, 0, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3
  		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
  		.byte	 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3
  		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  		.byte	 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  		.byte	 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
  #ifdef IOMD_IRQREQC
  irq_prio_lc:	.byte	24,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
  		.byte	28,24,25,24,26,26,26,26,27,27,27,27,27,27,27,27
  		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
  		.byte	30,30,30,30,30,30,30,30,27,27,27,27,27,27,27,27
  		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  		.byte	29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  		.byte	31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31
  #endif
  #ifdef IOMD_IRQREQD
  irq_prio_ld:	.byte	40,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
  		.byte	44,40,41,40,42,42,42,42,43,43,43,43,43,43,43,43
  		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
  		.byte	46,46,46,46,46,46,46,46,43,43,43,43,43,43,43,43
  		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  		.byte	45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  		.byte	47,47,47,47,47,47,47,47,47,47,47,47,47,47,47,47
  #endif