/*
 * (C) Copyright 2007 Michal Simek
 *
 * Michal  SIMEK <monstr@monstr.eu>
 *
 * SPDX-License-Identifier:	GPL-2.0+ 
 */

/* FSL macros */
#define NGET(val, fslnum) \
	__asm__ __volatile__ ("nget %0, rfsl" #fslnum :"=r" (val));

#define GET(val, fslnum) \
	__asm__ __volatile__ ("get %0, rfsl" #fslnum :"=r" (val));

#define NCGET(val, fslnum) \
	__asm__ __volatile__ ("ncget %0, rfsl" #fslnum :"=r" (val));

#define CGET(val, fslnum) \
	__asm__ __volatile__ ("cget %0, rfsl" #fslnum :"=r" (val));

#define NPUT(val, fslnum) \
	__asm__ __volatile__ ("nput %0, rfsl" #fslnum ::"r" (val));

#define PUT(val, fslnum) \
	__asm__ __volatile__ ("put %0, rfsl" #fslnum ::"r" (val));

#define NCPUT(val, fslnum) \
	__asm__ __volatile__ ("ncput %0, rfsl" #fslnum ::"r" (val));

#define CPUT(val, fslnum) \
	__asm__ __volatile__ ("cput %0, rfsl" #fslnum ::"r" (val));

/* CPU dependent */
/* machine status register */
#define MFS(val, reg) \
	__asm__ __volatile__ ("mfs %0," #reg :"=r" (val));

#define MTS(val, reg) \
	__asm__ __volatile__ ("mts " #reg ", %0"::"r" (val));

/* get return address from interrupt */
#define R14(val) \
	__asm__ __volatile__ ("addi %0, r14, 0":"=r" (val));

#define NOP	__asm__ __volatile__ ("nop");

/* use machine status registe USE_MSR_REG */
#if XILINX_USE_MSR_INSTR == 1
#define MSRSET(val) \
	__asm__ __volatile__ ("msrset r0," #val );

#define MSRCLR(val) \
	__asm__ __volatile__ ("msrclr r0," #val );

#else
#define MSRSET(val)						\
{								\
	register unsigned tmp;					\
	__asm__ __volatile__ ("					\
			mfs	%0, rmsr;			\
			ori	%0, %0, "#val";			\
			mts	rmsr, %0;			\
			nop;"					\
			: "=r" (tmp)				\
			: "d" (val)				\
			: "memory");				\
}

#define MSRCLR(val)						\
{								\
	register unsigned tmp;					\
	__asm__ __volatile__ ("					\
			mfs	%0, rmsr;			\
			andi	%0, %0, ~"#val";		\
			mts	rmsr, %0;			\
			nop;"					\
			: "=r" (tmp)				\
			: "d" (val)				\
			: "memory");				\
}
#endif
