1
2
3
4
5
6#ifndef __ASM_NIOS2_SYSTEM_H_
7#define __ASM_NIOS2_SYSTEM_H_
8
9#define local_irq_enable() __asm__ __volatile__ ( \
10 "rdctl r8, status\n" \
11 "ori r8, r8, 1\n" \
12 "wrctl status, r8\n" \
13 : : : "r8")
14
15#define local_irq_disable() __asm__ __volatile__ ( \
16 "rdctl r8, status\n" \
17 "andi r8, r8, 0xfffe\n" \
18 "wrctl status, r8\n" \
19 : : : "r8")
20
21#define local_save_flags(x) __asm__ __volatile__ ( \
22 "rdctl r8, status\n" \
23 "mov %0, r8\n" \
24 : "=r" (x) : : "r8", "memory")
25
26#define local_irq_restore(x) __asm__ __volatile__ ( \
27 "mov r8, %0\n" \
28 "wrctl status, r8\n" \
29 : : "r" (x) : "r8", "memory")
30
31
32#define local_irq_save(x) do { local_save_flags(x); local_irq_disable(); } \
33 while (0)
34
35#define irqs_disabled() \
36({ \
37 unsigned long flags; \
38 local_save_flags(flags); \
39 ((flags & NIOS2_STATUS_PIE_MSK) == 0x0); \
40})
41
42
43#define nios2_callr(addr) __asm__ __volatile__ ( \
44 "callr %0" \
45 : : "r" (addr))
46
47void display_sysid(void);
48
49#endif
50