quicklock.s
来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· S 代码 · 共 65 行
S
65 行
; -*-Text-*-
;
; TITLE("Simple locking mechanism for ARM")
;
; $Revision: 1.2 $
; $Author: kwelton $
; $Date: 2000/06/14 03:38:22 $
;
; Copyright (c) 2000 ARM Limited
; All Rights Reserved
;
; Module Name:
;
; quicklock.s
;
; Abstract:
;
; This module uses the swap instruction to implement a simple locking
; scheme
IMPORT Sleep
EXPORT SetLock
EXPORT ClearLock
AREA |As$Code|, CODE, READONLY
SetLock ROUT
;
; first try doesn't bother saving registers for speed
;
mov r1, #1
swpb r1, r1, [r0]
cmp r1, #0
moveq pc, lr
;
; someone has the lock - sleep() to force a context switch then try again
;
stmfd sp!, {r4, lr}
mov r4, r0
dosleep
mov r0, #1
bl Sleep
mov r0, #1
swpb r0, r0, [r4]
cmp r0, #0
bne dosleep
ldmfd sp!, {r4, pc}
;
; remove the lock - returns FALSE if no lock held
;
ClearLock ROUT
mov r1, #0
swpb r0, r1, [r0]
mov pc, lr
END
; EOF quicklock.s
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?