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
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
4 additions and
4 deletions
-
common_arm64.h
|
|
@@ -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) |
|
|
|