imask.c
00001
00002
00003
00004
00005
00006
00007 #include "sh7045lib.h"
00008
00009
00010
00011 void set_imask(int mask) {
00012 int srreg;
00013
00014 mask <<= 4;
00015 mask &= 0x00f0;
00016 asm("stc sr, %0 ": "=r"(srreg):);
00017 srreg &= 0xffffff0f;
00018 srreg |= mask;
00019 asm("ldc %0, sr ": :"r"(srreg));
00020 }
00021
00022
00023
00024 int get_imask(void) {
00025 unsigned int mask;
00026
00027 asm("stc sr, %0 ": "=r"(mask):);
00028 mask &= ~0xffffff0f;
00029 mask >>= 4;
00030
00031 return mask;
00032 }
00033