00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "asm_linkage.h"
00010
00011 .globl EnableInt
00012 .globl DisableInt
00013 .globl ClearPending
00014 .globl ClearSubPending
00015
00016 .equ UserStack ,0x33ff4800
00017 .equ SVCStack ,0x33ff5800
00018 .equ UndefStack ,0x33ff5c00
00019 .equ AbortStack ,0x33ff6000
00020 .equ IRQStack ,0x33ff7000
00021 .equ FIQStack ,0x33ff8000
00022
00023 .equ USERMODE ,0x10
00024 .equ FIQMODE ,0x11
00025 .equ IRQMODE ,0x12
00026 .equ SVCMODE ,0x13
00027 .equ ABORTMODE ,0x17
00028 .equ UNDEFMODE ,0x1b
00029 .equ MODEMASK ,0x1f
00030 .equ NOINT ,0xc0
00031
00032 ENTRY(Libs)
00033 EnableInt:
00034 mrs r0 ,cpsr
00035 bic r0 ,r0 ,#NOINT
00036 msr cpsr_cxsf ,r0
00037 mov pc ,lr
00038
00039 DisableInt:
00040 mrs r0 ,cpsr
00041 orr r0 ,r0 ,#NOINT
00042 msr cpsr_cxsf ,r0
00043 mov pc ,lr
00044
00045 ClearPending:
00046 mov r1,#0x4a000000
00047 str r0,[r1] @rSRCPND
00048 @mov r1, #0x4a000010 @ ??? gcc assembler problem ???
00049 ldr r1 ,=0x4a000010
00050 str r0,[r1] @rINTPND
00051 ldr r0,[r1]
00052 mov pc ,lr
00053
00054 ClearSubPending:
00055 ldr r1,=0x4a000018
00056 str r0,[r1] @rSUBSRCPND
00057 ldr r0,[r1]
00058 mov pc ,lr