/* * (C) Copyright 2007 Michal Simek * * Michal SIMEK <monstr@monstr.eu> * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ #include <config.h> #include <asm/asm.h> .text .global _interrupt_handler _interrupt_handler: addi r1, r1, -4 swi r2, r1, 0 addi r1, r1, -4 swi r3, r1, 0 addi r1, r1, -4 swi r4, r1, 0 addi r1, r1, -4 swi r5, r1, 0 addi r1, r1, -4 swi r6, r1, 0 addi r1, r1, -4 swi r7, r1, 0 addi r1, r1, -4 swi r8, r1, 0 addi r1, r1, -4 swi r9, r1, 0 addi r1, r1, -4 swi r10, r1, 0 addi r1, r1, -4 swi r11, r1, 0 addi r1, r1, -4 swi r12, r1, 0 addi r1, r1, -4 swi r13, r1, 0 addi r1, r1, -4 swi r14, r1, 0 addi r1, r1, -4 swi r15, r1, 0 addi r1, r1, -4 swi r16, r1, 0 addi r1, r1, -4 swi r17, r1, 0 addi r1, r1, -4 swi r18, r1, 0 addi r1, r1, -4 swi r19, r1, 0 addi r1, r1, -4 swi r20, r1, 0 addi r1, r1, -4 swi r21, r1, 0 addi r1, r1, -4 swi r22, r1, 0 addi r1, r1, -4 swi r23, r1, 0 addi r1, r1, -4 swi r24, r1, 0 addi r1, r1, -4 swi r25, r1, 0 addi r1, r1, -4 swi r26, r1, 0 addi r1, r1, -4 swi r27, r1, 0 addi r1, r1, -4 swi r28, r1, 0 addi r1, r1, -4 swi r29, r1, 0 addi r1, r1, -4 swi r30, r1, 0 addi r1, r1, -4 swi r31, r1, 0 brlid r15, interrupt_handler nop nop lwi r31, r1, 0 addi r1, r1, 4 lwi r30, r1, 0 addi r1, r1, 4 lwi r29, r1, 0 addi r1, r1, 4 lwi r28, r1, 0 addi r1, r1, 4 lwi r27, r1, 0 addi r1, r1, 4 lwi r26, r1, 0 addi r1, r1, 4 lwi r25, r1, 0 addi r1, r1, 4 lwi r24, r1, 0 addi r1, r1, 4 lwi r23, r1, 0 addi r1, r1, 4 lwi r22, r1, 0 addi r1, r1, 4 lwi r21, r1, 0 addi r1, r1, 4 lwi r20, r1, 0 addi r1, r1, 4 lwi r19, r1, 0 addi r1, r1, 4 lwi r18, r1, 0 addi r1, r1, 4 lwi r17, r1, 0 addi r1, r1, 4 lwi r16, r1, 0 addi r1, r1, 4 lwi r15, r1, 0 addi r1, r1, 4 lwi r14, r1, 0 addi r1, r1, 4 lwi r13, r1, 0 addi r1, r1, 4 lwi r12, r1, 0 addi r1, r1, 4 lwi r11, r1, 0 addi r1, r1, 4 lwi r10, r1, 0 addi r1, r1, 4 lwi r9, r1, 0 addi r1, r1, 4 lwi r8, r1, 0 addi r1, r1, 4 lwi r7, r1, 0 addi r1, r1, 4 lwi r6, r1, 0 addi r1, r1, 4 lwi r5, r1, 0 addi r1, r1, 4 lwi r4, r1, 0 addi r1, r1, 4 lwi r3, r1, 0 addi r1, r1, 4 lwi r2, r1, 0 addi r1, r1, 4 /* enable_interrupt */ #ifdef XILINX_USE_MSR_INSTR msrset r0, 2 #else /* FIXME unstable in stressed mode - two irqs */ nop addi r1, r1, -4 swi r12, r1, 0 mfs r12, rmsr ori r12, r12, 2 mts rmsr, r12 lwi r12, r1, 0 addi r1, r1, 4 nop #endif bra r14 nop nop .size _interrupt_handler,.-_interrupt_handler