00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _M68HC11_LOCKS_H
00029 #define _M68HC11_LOCKS_H
00030
00076
00085 static __inline__ unsigned short
00086 lock (void)
00087 {
00088 unsigned short mask;
00089
00090 __asm__ __volatile__ ("tpa\n\tsei" : "=d"(mask));
00091 return mask;
00092 }
00093
00100 static __inline__ void
00101 unlock (void)
00102 {
00103 __asm__ __volatile__ ("cli");
00104 }
00105
00112 static __inline__ void
00113 restore (unsigned short mask)
00114 {
00115 __asm__ __volatile__ ("tap" : : "d"(mask));
00116 }
00119 #endif