Commit 932e1780 authored by Evgeniy Paltsev's avatar Evgeniy Paltsev Committed by Maureen Helm
Browse files

ARC: use MWDT intrinsics to access aux regs in case of MWDT toolchain



Metaware doesn't support gcc's builtins so use corresponding intrinsics
instead.

Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
parent fb05bfce
Loading
Loading
Loading
Loading
+9 −19
Original line number Diff line number Diff line
@@ -160,31 +160,21 @@
#define Z_ARC_V2_ECR_PARAMETER(X) (X & 0xff)

#ifndef _ASMLANGUAGE
#if defined(__GNUC__)

#include <zephyr/types.h>
#define z_arc_v2_aux_reg_read(reg) __builtin_arc_lr((volatile uint32_t)reg)
#define z_arc_v2_aux_reg_write(reg, val) __builtin_arc_sr((unsigned int)val, (volatile uint32_t)reg)
#if defined(__CCAC__)

#else /* ! __GNUC__ */
#define z_arc_v2_aux_reg_read(reg) _lr((volatile uint32_t)reg)
#define z_arc_v2_aux_reg_write(reg, val) \
	_sr((unsigned int)val, (volatile uint32_t)reg)

#define z_arc_v2_aux_reg_read(reg)                                \
	({                                               \
		unsigned int __ret;                      \
		__asm__ __volatile__("       lr %0, [%1]" \
				     : "=r"(__ret)       \
				     : "i"(reg));        \
		__ret;                                   \
	})
#else /* ! __CCAC__ */

#define z_arc_v2_aux_reg_read(reg) __builtin_arc_lr((volatile uint32_t)reg)
#define z_arc_v2_aux_reg_write(reg, val) \
	({                                                   \
		__asm__ __volatile__("       sr %0, [%1]"    \
				     :                       \
				     : "ir"(val), "i"(reg)); \
	})
#endif /* __GNUC__ */
	__builtin_arc_sr((unsigned int)val, (volatile uint32_t)reg)

#endif /* __CCAC__ */
#endif /* _ASMLANGUAGE */

#define z_arc_v2_core_id() \