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
00075
00084 static __inline__ unsigned short
00085 lock (void)
00086 {
00087 unsigned short mask;
00088
00089 __asm__ __volatile__ ("tpa\n\tsei" : "=d"(mask));
00090 return mask;
00091 }
00092
00099 static __inline__ void
00100 unlock (void)
00101 {
00102 __asm__ __volatile__ ("cli");
00103 }
00104
00111 static __inline__ void
00112 restore (unsigned short mask)
00113 {
00114 __asm__ __volatile__ ("tap" : : "d"(mask));
00115 }
00118 #endif