18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
38c2ecf20Sopenharmony_ci
48c2ecf20Sopenharmony_ci#ifndef __ABI_REG_OPS_H
58c2ecf20Sopenharmony_ci#define __ABI_REG_OPS_H
68c2ecf20Sopenharmony_ci#include <asm/reg_ops.h>
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci#define cprcr(reg)					\
98c2ecf20Sopenharmony_ci({							\
108c2ecf20Sopenharmony_ci	unsigned int tmp;				\
118c2ecf20Sopenharmony_ci	asm volatile("cprcr %0, "reg"\n":"=b"(tmp));	\
128c2ecf20Sopenharmony_ci	tmp;						\
138c2ecf20Sopenharmony_ci})
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#define cpwcr(reg, val)					\
168c2ecf20Sopenharmony_ci({							\
178c2ecf20Sopenharmony_ci	asm volatile("cpwcr %0, "reg"\n"::"b"(val));	\
188c2ecf20Sopenharmony_ci})
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_cistatic inline unsigned int mfcr_hint(void)
218c2ecf20Sopenharmony_ci{
228c2ecf20Sopenharmony_ci	return mfcr("cr30");
238c2ecf20Sopenharmony_ci}
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_cistatic inline unsigned int mfcr_ccr2(void) { return 0; }
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci#endif /* __ABI_REG_OPS_H */
28