From e814983a452c40734c5ecc63581df88d3925835e Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Sun, 13 Feb 2022 17:31:22 -0700 Subject: Mode-aware locking --- src/util/lock.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) (limited to 'src/util') diff --git a/src/util/lock.c b/src/util/lock.c index 2a7d35e..6b048f4 100644 --- a/src/util/lock.c +++ b/src/util/lock.c @@ -1,5 +1,27 @@ -#include +#include +#include #include +#include + +void lock(struct Lock* l) +{ + unsigned long mode = getmode() & 0x1F; + if (mode == 0x10) { + sys1(SYS_LOCK, l); + } else { + atm_lock(CORE0_PID, (unsigned long*)l); + } +} + +void unlock(struct Lock* l) +{ + unsigned long mode = getmode() & 0x1F; + if (mode == 0x10) { + sys1(SYS_UNLOCK, l); + } else { + atm_release((unsigned long*)l); + } +} struct Lock* create_lock(void) { -- cgit v1.2.1