1a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg/* fpumacro.h: FPU related macros. 2a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg * 3a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) 4a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) 5a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg */ 6a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 7a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#ifndef _SPARC64_FPUMACRO_H 8a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#define _SPARC64_FPUMACRO_H 9a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 10a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#include <asm/asi.h> 11a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#include <asm/visasm.h> 12a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 13a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstruct fpustate { 14a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg u32 regs[64]; 15a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg}; 16a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 17a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#define FPUSTATE (struct fpustate *)(current_thread_info()->fpregs) 18a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 19a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline unsigned long fprs_read(void) 20a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 21a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg unsigned long retval; 22a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 23a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg __asm__ __volatile__("rd %%fprs, %0" : "=r" (retval)); 24a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 25a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg return retval; 26a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 27a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 28a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborgstatic inline void fprs_write(unsigned long val) 29a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg{ 30a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg __asm__ __volatile__("wr %0, 0x0, %%fprs" : : "r" (val)); 31a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg} 32a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg 33a00736e936c2a1e9c36f22f6f3a69392eaab51f4Sam Ravnborg#endif /* !(_SPARC64_FPUMACRO_H) */ 34