1bafb9395Sopenharmony_ci/* 2bafb9395Sopenharmony_ci * Copyright (c) 2020-2021 Huawei Device Co., Ltd. 3bafb9395Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4bafb9395Sopenharmony_ci * you may not use this file except in compliance with the License. 5bafb9395Sopenharmony_ci * You may obtain a copy of the License at 6bafb9395Sopenharmony_ci * 7bafb9395Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8bafb9395Sopenharmony_ci * 9bafb9395Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10bafb9395Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11bafb9395Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12bafb9395Sopenharmony_ci * See the License for the specific language governing permissions and 13bafb9395Sopenharmony_ci * limitations under the License. 14bafb9395Sopenharmony_ci */ 15bafb9395Sopenharmony_ci 16bafb9395Sopenharmony_ci#ifndef GRAPHIC_LITE_HAL_CPU_H 17bafb9395Sopenharmony_ci#define GRAPHIC_LITE_HAL_CPU_H 18bafb9395Sopenharmony_ci 19bafb9395Sopenharmony_ci#include <stdint.h> 20bafb9395Sopenharmony_ci 21bafb9395Sopenharmony_ci#ifdef __cplusplus 22bafb9395Sopenharmony_ci#if __cplusplus 23bafb9395Sopenharmony_ciextern "C" { 24bafb9395Sopenharmony_ci#endif 25bafb9395Sopenharmony_ci#endif 26bafb9395Sopenharmony_ci 27bafb9395Sopenharmony_ci#ifdef _WIN32 28bafb9395Sopenharmony_ci#define BARRIER() MemoryBarrier() 29bafb9395Sopenharmony_ci#define MB() BARRIER() 30bafb9395Sopenharmony_ci#define WMB() BARRIER() 31bafb9395Sopenharmony_ci#define RMB() BARRIER() 32bafb9395Sopenharmony_ci#elif defined __linux__ || defined __LITEOS__ || defined __APPLE__ 33bafb9395Sopenharmony_ci#ifdef __ICCARM__ 34bafb9395Sopenharmony_ci#define DSB() __asm volatile("dsb" ::: "memory") 35bafb9395Sopenharmony_ci#define DMB() __asm volatile("dmb" ::: "memory") 36bafb9395Sopenharmony_ci#define ISB() __asm volatile("isb" ::: "memory") 37bafb9395Sopenharmony_ci#define BARRIER() __asm volatile("" ::: "memory") 38bafb9395Sopenharmony_ci#else 39bafb9395Sopenharmony_ci#define DSB() __asm__ volatile("dsb" ::: "memory") 40bafb9395Sopenharmony_ci#define DMB() __asm__ volatile("dmb" ::: "memory") 41bafb9395Sopenharmony_ci#define ISB() __asm__ volatile("isb" ::: "memory") 42bafb9395Sopenharmony_ci#define BARRIER() __asm__ volatile("" ::: "memory") 43bafb9395Sopenharmony_ci#endif 44bafb9395Sopenharmony_ci 45bafb9395Sopenharmony_ci#define MB() DMB() 46bafb9395Sopenharmony_ci#define WMB() DMB() 47bafb9395Sopenharmony_ci#define RMB() DMB() 48bafb9395Sopenharmony_ci#else 49bafb9395Sopenharmony_ci#define MB() 50bafb9395Sopenharmony_ci#define WMB() 51bafb9395Sopenharmony_ci#define RMB() 52bafb9395Sopenharmony_ci#endif 53bafb9395Sopenharmony_ci 54bafb9395Sopenharmony_ciuint32_t HalGetCpuCoreNum(); 55bafb9395Sopenharmony_ci 56bafb9395Sopenharmony_ci#ifdef __cplusplus 57bafb9395Sopenharmony_ci#if __cplusplus 58bafb9395Sopenharmony_ci} 59bafb9395Sopenharmony_ci#endif /* __cplusplus */ 60bafb9395Sopenharmony_ci#endif /* __cplusplus */ 61bafb9395Sopenharmony_ci#endif // GRAPHIC_LITE_HAL_CPU_H 62