summaryrefslogtreecommitdiff
path: root/utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2014-02-09 22:25:25 +0100
committerMarcin Bukat <marcin.bukat@gmail.com>2014-02-09 22:29:30 +0100
commit75525422883c5e951d1e5fa27c08373b1737301f (patch)
tree429547eb4ef23734d8b9c0a87cac8cddad0b5c55 /utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c
parentbde5394f5a4cc40478f28911cdcde6cec85f1b6d (diff)
downloadrockbox-75525422883c5e951d1e5fa27c08373b1737301f.tar.gz
rockbox-75525422883c5e951d1e5fa27c08373b1737301f.zip
atj213x: Simple test exploring irq handling
This test software setups timer T0 periodic interrupt. In ISR it changes backlight level. The interrupt handler does not support nesting and the whole ISR is run in interrupt context. Exceptions are not handled yet. Change-Id: Idc5d622991c7257b4577448d8be08ddd1c24c745
Diffstat (limited to 'utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c')
-rw-r--r--utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c b/utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c
new file mode 100644
index 0000000000..b93262579e
--- /dev/null
+++ b/utils/atj2137/adfuload/test_binary/timer_irq/system-atj213x.c
@@ -0,0 +1,41 @@
1#define default_interrupt(name) \
2 extern __attribute__((weak,alias("UIRQ"))) void name (void)
3
4default_interrupt(INT_MCA);
5default_interrupt(INT_SD);
6default_interrupt(INT_MHA);
7/* default_interrupt(INT_USB); seems wrong */
8default_interrupt(INT_DSP);
9default_interrupt(INT_PCNT);
10default_interrupt(INT_WD);
11default_interrupt(INT_T1);
12default_interrupt(INT_T0);
13default_interrupt(INT_RTC);
14default_interrupt(INT_DMA);
15default_interrupt(INT_KEY);
16default_interrupt(INT_EXT);
17default_interrupt(INT_IIC2);
18default_interrupt(INT_IIC1);
19default_interrupt(INT_ADC);
20default_interrupt(INT_DAC);
21default_interrupt(INT_NAND);
22default_interrupt(INT_YUV);
23
24/* this will be panicf() on regular rockbox fw */
25static void UIRQ(void)
26{
27 while(1);
28}
29
30/* TRICK ALERT !!!!
31 * The table is organized in reversed order so
32 * clz on INTC_PD returns the index in this table
33 */
34void (* const irqvector[])(void) __attribute__((used)) =
35{
36 UIRQ, UIRQ, UIRQ, UIRQ, UIRQ, INT_YUV, UIRQ, INT_NAND,
37 UIRQ, INT_DAC, INT_ADC, UIRQ, UIRQ, INT_IIC1, INT_IIC2, UIRQ,
38 UIRQ, INT_EXT, INT_KEY, INT_DMA, INT_RTC, INT_T0, INT_T1, INT_WD,
39 INT_PCNT, UIRQ, INT_DSP, UIRQ, INT_MHA, INT_SD, UIRQ, INT_MCA
40};
41