From f3d40b34df954eb533cf3d1e9bce2ad3a7eaea21 Mon Sep 17 00:00:00 2001 From: Fabian Montero Date: Wed, 4 Oct 2023 19:24:52 -0600 Subject: comenta demo de spinlock --- demo/lock.S | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/demo/lock.S b/demo/lock.S index 3ec2765..120728b 100644 --- a/demo/lock.S +++ b/demo/lock.S @@ -11,13 +11,17 @@ spin_lock: orr r2, r2, #0xc0 @ Levanta I, F msr cpsr_c, r2 mov r3, #1 -1: ldrex r2, [r0] - teq r2, #0 - strexeq r2, r3, [r0] - teqeq r2, #0 - bne 1b - mov pc, lr - +1: ldrex r2, [r0] @ se carga el valor del lock + teq r2, #0 @ se revisa si el valor del lock, si es 1, se bringa al jump + strexeq r2, r3, [r0] @ trata de guardar r3 en r0, pero solo si el monitor se lo permite + teqeq r2, #0 @ revisa si en efecto se hizo el store o no + bne 1b @ regresa al inicio + mov pc, lr @ retorna de la función + @ + @ la implicación de esto es que si dos + @ cores intentan hacer accesar al mismo + @ recurso, el monitor solo va a dejar a uno + @ de ellos hacerlo .global spin_unlock spin_unlock: mov r2, #0 -- cgit v1.2.3