source: rtems/c/src/lib/libcpu/arm/at91rm9200/irq/bsp_irq_asm.S @ af85485

4.104.114.84.95
Last change on this file since af85485 was af85485, checked in by Jay Monkman <jtm@…>, on 07/15/04 at 06:24:14

2004-07-15 Jay Monkman

  • ChangeLog?, Makefile.am, clock/.cvsignore, clock/clock.c, dbgu/.cvsignore, dbgu/dbgu.c, include/at91rm9200.h, include/at91rm9200_dbgu.h, include/at91rm9200_emac.h, include/at91rm9200_gpio.h, include/at91rm9200_mem.h, include/at91rm9200_pmc.h, include/bits.h, irq/.cvsignore, irq/bsp_irq_asm.S, irq/bsp_irq_init.c, irq/irq.c, irq/irq.h, pmc/pmc.c, timer/.cvsignore, timer/timer.c: New files.
  • Property mode set to 100644
File size: 1.0 KB
Line 
1/*
2 * Atmel AT91RM9200 Interrupt handler
3 *
4 * Copyright (c) 2004 by Jay Monkman <jtm@lopgindog.com>
5 *     
6 *  The license and distribution terms for this file may be
7 *  found in the file LICENSE in this distribution or at
8 *
9 *  http://www.OARcorp.com/rtems/license.html.
10 *
11 *
12 *  $Id$
13 */
14#define __asm__
15       
16        .globl ExecuteITHandler
17ExecuteITHandler :
18/*
19 * Look at interrupt status register to determine source.
20 * From source, determine offset into expanded vector table
21 * and load handler address into r0.
22 */
23        ldr     r0, =0xFFFFF100   /* AIC_CTL_BASE + AIC_IVR */
24        ldr     r1, [r0]               
25        str     r1, [r0]          /* write back in case we are using protect */
26
27        stmdb   sp!,{lr}
28        ldr     lr, =IRQ_return   /* prepare the return from handler  */
29
30        mov     pc, r1            /* execute handler */
31
32IRQ_return:
33        ldr   r2, =0xFFFFF130     /* AIC_CTL_BASE + AIC_EIOCR */
34        str   r1, [r2]
35       
36        ldmia sp!,{lr}
37
38        mov pc, lr
Note: See TracBrowser for help on using the repository browser.