Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.16-rc7 63 lines 1.3 kB view raw
1/* 2 * Copyright (C) 2016-2017 Synopsys, Inc. (www.synopsys.com) 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 as 6 * published by the Free Software Foundation. 7 * 8 */ 9 10#ifndef __SOC_ARC_AUX_H__ 11#define __SOC_ARC_AUX_H__ 12 13#ifdef CONFIG_ARC 14 15#define read_aux_reg(r) __builtin_arc_lr(r) 16 17/* gcc builtin sr needs reg param to be long immediate */ 18#define write_aux_reg(r, v) __builtin_arc_sr((unsigned int)(v), r) 19 20#else /* !CONFIG_ARC */ 21 22static inline int read_aux_reg(u32 r) 23{ 24 return 0; 25} 26 27/* 28 * function helps elide unused variable warning 29 * see: http://lists.infradead.org/pipermail/linux-snps-arc/2016-November/001748.html 30 */ 31static inline void write_aux_reg(u32 r, u32 v) 32{ 33 ; 34} 35 36#endif 37 38#define READ_BCR(reg, into) \ 39{ \ 40 unsigned int tmp; \ 41 tmp = read_aux_reg(reg); \ 42 if (sizeof(tmp) == sizeof(into)) { \ 43 into = *((typeof(into) *)&tmp); \ 44 } else { \ 45 extern void bogus_undefined(void); \ 46 bogus_undefined(); \ 47 } \ 48} 49 50#define WRITE_AUX(reg, into) \ 51{ \ 52 unsigned int tmp; \ 53 if (sizeof(tmp) == sizeof(into)) { \ 54 tmp = (*(unsigned int *)&(into)); \ 55 write_aux_reg(reg, tmp); \ 56 } else { \ 57 extern void bogus_undefined(void); \ 58 bogus_undefined(); \ 59 } \ 60} 61 62 63#endif