📄 tas.c.template
字号:
/* * To generate tas.s using this template: * 1. cc +O2 -S -c tas.c * 2. edit tas.s: * - replace the LDW with LDCWX * For details about the LDCWX instruction, see the "Precision * Architecture and Instruction Reference Manual" (09740-90014 of June * 1987), p. 5-38. */inttas(lock) int *lock; /* LDCWX is a word instruction */{ /* * LDCWX requires that we align the "semaphore" to a 16-byte * boundary. The actual datum is a single word (4 bytes). */ lock = ((long) lock + 15) & ~15; /* * The LDCWX instruction atomically clears the target word and * returns the previous value. Hence, if the instruction returns * 0, someone else has already acquired the lock before we tested * it (i.e., we have failed). * * Notice that this means that we actually clear the word to set * the lock and set the word to clear the lock. This is the * opposite behavior from the SPARC LDSTUB instruction. For some * reason everything that H-P does is rather baroque... */ if (*lock) { /* this generates the LDW */ return(0); /* success */ } return(1); /* failure */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -