locks.h00001
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
00081
00090 static __inline__ unsigned short
00091 lock (void)
00092 {
00093 unsigned short mask;
00094
00095 __asm__ __volatile__ ("tpa\n\tsei" : "=d"(mask));
00096 return mask;
00097 }
00098
00105 static __inline__ void
00106 unlock (void)
00107 {
00108 __asm__ __volatile__ ("cli");
00109 }
00110
00117 static __inline__ void
00118 restore (unsigned short mask)
00119 {
00120 __asm__ __volatile__ ("tap" : : "d"(mask));
00121 }
00122
00134 static __inline__ void
00135 interruption_point (void)
00136 {
00137 __asm__ __volatile__ ("cli\n\t"
00138 "nop\n\t"
00139 "sei");
00140 }
00141
00144 #endif
|