18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* fpumacro.h: FPU related macros. 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) 58c2ecf20Sopenharmony_ci * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _SPARC64_FPUMACRO_H 98c2ecf20Sopenharmony_ci#define _SPARC64_FPUMACRO_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <asm/asi.h> 128c2ecf20Sopenharmony_ci#include <asm/visasm.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cistruct fpustate { 158c2ecf20Sopenharmony_ci u32 regs[64]; 168c2ecf20Sopenharmony_ci}; 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define FPUSTATE (struct fpustate *)(current_thread_info()->fpregs) 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cistatic inline unsigned long fprs_read(void) 218c2ecf20Sopenharmony_ci{ 228c2ecf20Sopenharmony_ci unsigned long retval; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci __asm__ __volatile__("rd %%fprs, %0" : "=r" (retval)); 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci return retval; 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistatic inline void fprs_write(unsigned long val) 308c2ecf20Sopenharmony_ci{ 318c2ecf20Sopenharmony_ci __asm__ __volatile__("wr %0, 0x0, %%fprs" : : "r" (val)); 328c2ecf20Sopenharmony_ci} 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ci#endif /* !(_SPARC64_FPUMACRO_H) */ 35