OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [src/] [arch/] [arm/] [v5/] [irq.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/*
2
 * Low-level irq routines.
3
 *
4
 * Copyright (C) 2010 B Labs Ltd.
5
 * Written by  Bahadir Balban
6
 * Prem Mallappa <prem.mallappa@b-labs.co.uk>
7
 */
8
 
9
void irq_local_disable_save(unsigned long *state)
10
{
11
        unsigned int tmp, tmp2;
12
        __asm__ __volatile__ (
13
                "mrs %0, cpsr_fc \n"
14
                "orr %1, %0, #0x80 \n"
15
                "msr cpsr_fc, %1 \n"
16
                : "=&r"(tmp), "=r"(tmp2)
17
                :
18
                : "cc"
19
                );
20
        *state = tmp;
21
}
22
 
23
void irq_local_restore(unsigned long state)
24
{
25
        __asm__ __volatile__ (
26
                "msr cpsr_fc, %0\n"
27
                :
28
                : "r"(state)
29
                : "cc"
30
                );
31
}
32
 
33
int irqs_enabled(void)
34
{
35
        int tmp;
36
        __asm__ __volatile__ (
37
                "mrs %0, cpsr_fc\n"
38
                : "=r"(tmp)
39
                );
40
 
41
        if (tmp & 0x80)
42
                return 0;
43
 
44
        return 1;
45
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.