//MACRO Lock.get LockAddr, WReg //-------------------------------------------------------------------------------------------------- // // @ CopyRight Roberti & Parau Enterprises, Inc. 2021-2023 // // This work is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International License. // To view a copy of this license, visit http://creativecommons.org/licenses/by-nd/4.0/ // or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. // //-------------------------------------------------------------------------------------------------- // // // Generate code // eval(DVASM.getEnv()[4]); var lockVal= WReg; \#Label ADDI #lockVal, 1[0] // Load lock valule for lock word \ WHILE // Loop to get the lock \ AMOSWAP.#abiWID..AQ #lockVal, #lockVal, #LockAddr // Try to get the lock \ ENDWHILE Condition= ( #lockVal == 0 ) // Retry if failed to get lock");