sparc, sparc64: use arch/sparc/include
The majority of this patch was created by the following script: *** ASM=arch/sparc/include/asm mkdir -p $ASM git mv include/asm-sparc64/ftrace.h $ASM git rm include/asm-sparc64/* git mv include/asm-sparc/* $ASM sed -ie 's/asm-sparc64/asm/g' $ASM/* sed -ie 's/asm-sparc/asm/g' $ASM/* *** The rest was an update of the top-level Makefile to use sparc for header files when sparc64 is being build. And a small fixlet to pick up the correct unistd.h from sparc64 code. Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
This commit is contained in:
62
arch/sparc/include/asm/visasm.h
Normal file
62
arch/sparc/include/asm/visasm.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#ifndef _SPARC64_VISASM_H
|
||||
#define _SPARC64_VISASM_H
|
||||
|
||||
/* visasm.h: FPU saving macros for VIS routines
|
||||
*
|
||||
* Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
|
||||
*/
|
||||
|
||||
#include <asm/pstate.h>
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc */
|
||||
|
||||
#define VISEntry \
|
||||
rd %fprs, %o5; \
|
||||
andcc %o5, (FPRS_FEF|FPRS_DU), %g0; \
|
||||
be,pt %icc, 297f; \
|
||||
sethi %hi(297f), %g7; \
|
||||
sethi %hi(VISenter), %g1; \
|
||||
jmpl %g1 + %lo(VISenter), %g0; \
|
||||
or %g7, %lo(297f), %g7; \
|
||||
297: wr %g0, FPRS_FEF, %fprs; \
|
||||
|
||||
#define VISExit \
|
||||
wr %g0, 0, %fprs;
|
||||
|
||||
/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc.
|
||||
* Must preserve %o5 between VISEntryHalf and VISExitHalf */
|
||||
|
||||
#define VISEntryHalf \
|
||||
rd %fprs, %o5; \
|
||||
andcc %o5, FPRS_FEF, %g0; \
|
||||
be,pt %icc, 297f; \
|
||||
sethi %hi(298f), %g7; \
|
||||
sethi %hi(VISenterhalf), %g1; \
|
||||
jmpl %g1 + %lo(VISenterhalf), %g0; \
|
||||
or %g7, %lo(298f), %g7; \
|
||||
clr %o5; \
|
||||
297: wr %o5, FPRS_FEF, %fprs; \
|
||||
298:
|
||||
|
||||
#define VISExitHalf \
|
||||
wr %o5, 0, %fprs;
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
static inline void save_and_clear_fpu(void) {
|
||||
__asm__ __volatile__ (
|
||||
" rd %%fprs, %%o5\n"
|
||||
" andcc %%o5, %0, %%g0\n"
|
||||
" be,pt %%icc, 299f\n"
|
||||
" sethi %%hi(298f), %%g7\n"
|
||||
" sethi %%hi(VISenter), %%g1\n"
|
||||
" jmpl %%g1 + %%lo(VISenter), %%g0\n"
|
||||
" or %%g7, %%lo(298f), %%g7\n"
|
||||
" 298: wr %%g0, 0, %%fprs\n"
|
||||
" 299:\n"
|
||||
" " : : "i" (FPRS_FEF|FPRS_DU) :
|
||||
"o5", "g1", "g2", "g3", "g7", "cc");
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _SPARC64_ASI_H */
|
Reference in New Issue
Block a user