1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 2 /* 3 * Copyright (C) 2016-2017 Synopsys, Inc. (www 4 */ 5 6 #ifndef __SOC_ARC_AUX_H__ 7 #define __SOC_ARC_AUX_H__ 8 9 #ifdef CONFIG_ARC 10 11 #define read_aux_reg(r) __builtin_arc_ 12 13 /* gcc builtin sr needs reg param to be long i 14 #define write_aux_reg(r, v) __builtin_arc_ 15 16 #else /* !CONFIG_ARC */ 17 18 static inline int read_aux_reg(u32 r) 19 { 20 return 0; 21 } 22 23 /* 24 * function helps elide unused variable warnin 25 * see: https://lists.infradead.org/pipermail/ 26 */ 27 static inline void write_aux_reg(u32 r, u32 v) 28 { 29 ; 30 } 31 32 #endif 33 34 #define READ_BCR(reg, into) 35 { 36 unsigned int tmp; 37 tmp = read_aux_reg(reg); 38 if (sizeof(tmp) == sizeof(into)) { 39 into = *((typeof(into) *)&tmp) 40 } else { 41 extern void bogus_undefined(vo 42 bogus_undefined(); 43 } 44 } 45 46 #define WRITE_AUX(reg, into) 47 { 48 unsigned int tmp; 49 if (sizeof(tmp) == sizeof(into)) { 50 tmp = (*(unsigned int *)&(into 51 write_aux_reg(reg, tmp); 52 } else { 53 extern void bogus_undefined(vo 54 bogus_undefined(); 55 } 56 } 57 58 59 #endif 60
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.