]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/arm_drivers/drv/include/proc.h
update
[l4.git] / l4 / pkg / arm_drivers / drv / include / proc.h
1 #include <l4/sys/types.h>
2
3 typedef l4_umword_t proc_status;
4
5 static inline
6 proc_status proc_cli_save(void)
7 {
8   proc_status ret;
9   asm volatile ( "    mrs    r6, cpsr    \n"
10                  "    mov    %0, r6      \n"
11                  "    orr    r6,r6,#128  \n"
12                  "    msr    cpsr_c, r6  \n"
13                  : "=r"(ret) : : "r6"
14                  );
15   return ret;
16 }
17
18 static inline
19 void proc_sti_restore(proc_status st)
20 {
21   asm volatile ( "    tst    %0, #128    \n"
22                  "    bne    1f          \n"
23                  "    mrs    r6, cpsr    \n"
24                  "    bic    r6,r6,#128  \n"
25                  "    msr    cpsr_c, r6  \n"
26                  "1:                     \n"
27                  : : "r"(st) : "r6"
28                  );
29 }