2022-11-10 22:22:48 +08:00
|
|
|
|
/*
|
|
|
|
|
* Copyright : (C) 2022 Phytium Information Technology, Inc.
|
|
|
|
|
* All Rights Reserved.
|
|
|
|
|
*
|
|
|
|
|
* This program is OPEN SOURCE software: you can redistribute it and/or modify it
|
|
|
|
|
* under the terms of the Phytium Public License as published by the Phytium Technology Co.,Ltd,
|
|
|
|
|
* either version 1.0 of the License, or (at your option) any later version.
|
|
|
|
|
*
|
|
|
|
|
* This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY;
|
|
|
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
|
* See the Phytium Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* FilePath: _cpu_asm.S
|
|
|
|
|
* Date: 2022-02-10 14:53:42
|
|
|
|
|
* LastEditTime: 2022-02-17 17:57:55
|
2023-05-11 10:25:21 +08:00
|
|
|
|
* Description: This file is for
|
2022-11-10 22:22:48 +08:00
|
|
|
|
*
|
|
|
|
|
* Modify History:
|
|
|
|
|
* Ver Who Date Changes
|
|
|
|
|
* ----- ------ -------- --------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include "sdkconfig.h"
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_TARGET_ARMV8_AARCH64
|
|
|
|
|
// ------------------------------------------------------------
|
|
|
|
|
.global GetAffinity
|
|
|
|
|
//uint32_t GetAffinity(void);
|
|
|
|
|
.type GetAffinity, @function
|
|
|
|
|
GetAffinity:
|
|
|
|
|
MRS x0, MPIDR_EL1
|
|
|
|
|
RET
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.global ArchSpinLock;
|
|
|
|
|
.text;
|
|
|
|
|
ArchSpinLock:
|
|
|
|
|
mov w2, #1
|
|
|
|
|
sevl
|
|
|
|
|
1:
|
|
|
|
|
wfe
|
|
|
|
|
ldaxr w1, [x0]
|
|
|
|
|
cbnz w1, 1b
|
|
|
|
|
stxr w1, w2, [x0]
|
|
|
|
|
cbnz w1, 1b
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.global ArchSpinUnlock;
|
|
|
|
|
.text;
|
|
|
|
|
ArchSpinUnlock:
|
|
|
|
|
stlr xzr, [x0]
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
|
|
.globl GetAffinity
|
|
|
|
|
GetAffinity:
|
|
|
|
|
mrc p15, #0, r0, c0, c0, #5 @ read multiprocessor affinity register
|
|
|
|
|
bx lr
|
|
|
|
|
|
|
|
|
|
#endif
|