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