Browse Source

Merge pull request #2468 from AGSaidi/wfe

Use wait-for-event to not spin in the blas_lock
tags/v0.3.9
Martin Kroeker GitHub 5 years ago
parent
commit
e94590e400
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 4 deletions
  1. +4
    -4
      common_arm64.h

+ 4
- 4
common_arm64.h View File

@@ -53,16 +53,16 @@ static void __inline blas_lock(volatile BLASULONG *address){
BLASULONG ret;

do {
while (*address) {YIELDING;};

__asm__ __volatile__(
"mov x4, #1 \n\t"
"sevl \n\t"
"1: \n\t"
"wfe \n\t"
"2: \n\t"
"ldaxr x2, [%1] \n\t"
"cbnz x2, 1b \n\t"
"2: \n\t"
"stxr w3, x4, [%1] \n\t"
"cbnz w3, 1b \n\t"
"cbnz w3, 2b \n\t"
"mov %0, #0 \n\t"
: "=r"(ret), "=r"(address)
: "1"(address)


Loading…
Cancel
Save