From 83dfe5eac459e1aa070ac685a0164e6c255471ca Mon Sep 17 00:00:00 2001 From: Wayne Ren Date: Thu, 25 Jul 2019 11:17:34 +0800 Subject: [PATCH] arch: arc: add macros to get current cpu id add macros for assembly and C to get current cpu id Signed-off-by: Wayne Ren --- arch/arc/include/swap_macros.h | 5 +++++ include/arch/arc/v2/aux_regs.h | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/arc/include/swap_macros.h b/arch/arc/include/swap_macros.h index b9887c42420..d33ab4a8959 100644 --- a/arch/arc/include/swap_macros.h +++ b/arch/arc/include/swap_macros.h @@ -295,6 +295,11 @@ extern "C" { cmp \reg1, \reg2 .endm +.macro _get_cpu_id reg + lr \reg, [_ARC_V2_IDENTITY] + xbfu \reg, \reg, 0xe8 +.endm + #endif /* _ASMLANGUAGE */ #ifdef __cplusplus diff --git a/include/arch/arc/v2/aux_regs.h b/include/arch/arc/v2/aux_regs.h index 52f6ce86105..057968cc079 100644 --- a/include/arch/arc/v2/aux_regs.h +++ b/include/arch/arc/v2/aux_regs.h @@ -177,8 +177,19 @@ extern "C" { : "ir"(val), "i"(reg)); \ }) #endif /* __GNUC__ */ + #endif /* _ASMLANGUAGE */ +#define z_arc_v2_core_id() \ + ({ \ + unsigned int __ret; \ + __asm__ __volatile__("lr %0, [%1]\n" \ + "xbfu %0, %0, 0xe8\n" \ + : "=r"(__ret) \ + : "i"(_ARC_V2_IDENTITY)); \ + __ret; \ + }) + #ifdef __cplusplus } #endif