summaryrefslogtreecommitdiff
path: root/arch/mn10300/kernel/fpu-low.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mn10300/kernel/fpu-low.S')
-rw-r--r--arch/mn10300/kernel/fpu-low.S258
1 files changed, 0 insertions, 258 deletions
diff --git a/arch/mn10300/kernel/fpu-low.S b/arch/mn10300/kernel/fpu-low.S
deleted file mode 100644
index 78df25cfae29..000000000000
--- a/arch/mn10300/kernel/fpu-low.S
+++ /dev/null
@@ -1,258 +0,0 @@
-/* MN10300 Low level FPU management operations
- *
- * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
- * Written by David Howells (dhowells@redhat.com)
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public Licence
- * as published by the Free Software Foundation; either version
- * 2 of the Licence, or (at your option) any later version.
- */
-#include <linux/linkage.h>
-#include <asm/cpu-regs.h>
-#include <asm/smp.h>
-#include <asm/thread_info.h>
-#include <asm/asm-offsets.h>
-#include <asm/frame.inc>
-
-.macro FPU_INIT_STATE_ALL
- fmov 0,fs0
- fmov fs0,fs1
- fmov fs0,fs2
- fmov fs0,fs3
- fmov fs0,fs4
- fmov fs0,fs5
- fmov fs0,fs6
- fmov fs0,fs7
- fmov fs0,fs8
- fmov fs0,fs9
- fmov fs0,fs10
- fmov fs0,fs11
- fmov fs0,fs12
- fmov fs0,fs13
- fmov fs0,fs14
- fmov fs0,fs15
- fmov fs0,fs16
- fmov fs0,fs17
- fmov fs0,fs18
- fmov fs0,fs19
- fmov fs0,fs20
- fmov fs0,fs21
- fmov fs0,fs22
- fmov fs0,fs23
- fmov fs0,fs24
- fmov fs0,fs25
- fmov fs0,fs26
- fmov fs0,fs27
- fmov fs0,fs28
- fmov fs0,fs29
- fmov fs0,fs30
- fmov fs0,fs31
- fmov FPCR_INIT,fpcr
-.endm
-
-.macro FPU_SAVE_ALL areg,dreg
- fmov fs0,(\areg+)
- fmov fs1,(\areg+)
- fmov fs2,(\areg+)
- fmov fs3,(\areg+)
- fmov fs4,(\areg+)
- fmov fs5,(\areg+)
- fmov fs6,(\areg+)
- fmov fs7,(\areg+)
- fmov fs8,(\areg+)
- fmov fs9,(\areg+)
- fmov fs10,(\areg+)
- fmov fs11,(\areg+)
- fmov fs12,(\areg+)
- fmov fs13,(\areg+)
- fmov fs14,(\areg+)
- fmov fs15,(\areg+)
- fmov fs16,(\areg+)
- fmov fs17,(\areg+)
- fmov fs18,(\areg+)
- fmov fs19,(\areg+)
- fmov fs20,(\areg+)
- fmov fs21,(\areg+)
- fmov fs22,(\areg+)
- fmov fs23,(\areg+)
- fmov fs24,(\areg+)
- fmov fs25,(\areg+)
- fmov fs26,(\areg+)
- fmov fs27,(\areg+)
- fmov fs28,(\areg+)
- fmov fs29,(\areg+)
- fmov fs30,(\areg+)
- fmov fs31,(\areg+)
- fmov fpcr,\dreg
- mov \dreg,(\areg)
-.endm
-
-.macro FPU_RESTORE_ALL areg,dreg
- fmov (\areg+),fs0
- fmov (\areg+),fs1
- fmov (\areg+),fs2
- fmov (\areg+),fs3
- fmov (\areg+),fs4
- fmov (\areg+),fs5
- fmov (\areg+),fs6
- fmov (\areg+),fs7
- fmov (\areg+),fs8
- fmov (\areg+),fs9
- fmov (\areg+),fs10
- fmov (\areg+),fs11
- fmov (\areg+),fs12
- fmov (\areg+),fs13
- fmov (\areg+),fs14
- fmov (\areg+),fs15
- fmov (\areg+),fs16
- fmov (\areg+),fs17
- fmov (\areg+),fs18
- fmov (\areg+),fs19
- fmov (\areg+),fs20
- fmov (\areg+),fs21
- fmov (\areg+),fs22
- fmov (\areg+),fs23
- fmov (\areg+),fs24
- fmov (\areg+),fs25
- fmov (\areg+),fs26
- fmov (\areg+),fs27
- fmov (\areg+),fs28
- fmov (\areg+),fs29
- fmov (\areg+),fs30
- fmov (\areg+),fs31
- mov (\areg),\dreg
- fmov \dreg,fpcr
-.endm
-
-###############################################################################
-#
-# void fpu_init_state(void)
-# - initialise the FPU
-#
-###############################################################################
- .globl fpu_init_state
- .type fpu_init_state,@function
-fpu_init_state:
- mov epsw,d0
- or EPSW_FE,epsw
-
-#ifdef CONFIG_MN10300_PROC_MN103E010
- nop
- nop
- nop
-#endif
- FPU_INIT_STATE_ALL
-#ifdef CONFIG_MN10300_PROC_MN103E010
- nop
- nop
- nop
-#endif
- mov d0,epsw
- ret [],0
-
- .size fpu_init_state,.-fpu_init_state
-
-###############################################################################
-#
-# void fpu_save(struct fpu_state_struct *)
-# - save the fpu state
-# - note that an FPU Operational exception might occur during this process
-#
-###############################################################################
- .globl fpu_save
- .type fpu_save,@function
-fpu_save:
- mov epsw,d1
- or EPSW_FE,epsw /* enable the FPU so we can access it */
-
-#ifdef CONFIG_MN10300_PROC_MN103E010
- nop
- nop
-#endif
- mov d0,a0
- FPU_SAVE_ALL a0,d0
-#ifdef CONFIG_MN10300_PROC_MN103E010
- nop
- nop
-#endif
-
- mov d1,epsw
- ret [],0
-
- .size fpu_save,.-fpu_save
-
-###############################################################################
-#
-# void fpu_disabled(void)
-# - handle an exception due to the FPU being disabled
-# when CONFIG_FPU is enabled
-#
-###############################################################################
- .type fpu_disabled,@function
- .globl fpu_disabled
-fpu_disabled:
- or EPSW_nAR|EPSW_FE,epsw
- nop
- nop
- nop
-
- mov sp,a1
- mov (a1),d1 /* get epsw of user context */
- and ~(THREAD_SIZE-1),a1 /* a1: (thread_info *ti) */
- mov (TI_task,a1),a2 /* a2: (task_struct *tsk) */
- btst EPSW_nSL,d1
- beq fpu_used_in_kernel
-
- or EPSW_FE,d1
- mov d1,(sp)
- mov (TASK_THREAD+THREAD_FPU_FLAGS,a2),d1
-#ifndef CONFIG_LAZY_SAVE_FPU
- or __THREAD_HAS_FPU,d1
- mov d1,(TASK_THREAD+THREAD_FPU_FLAGS,a2)
-#else /* !CONFIG_LAZY_SAVE_FPU */
- mov (fpu_state_owner),a0
- cmp 0,a0
- beq fpu_regs_save_end
-
- mov (TASK_THREAD+THREAD_UREGS,a0),a1
- add TASK_THREAD+THREAD_FPU_STATE,a0
- FPU_SAVE_ALL a0,d0
-
- mov (REG_EPSW,a1),d0
- and ~EPSW_FE,d0
- mov d0,(REG_EPSW,a1)
-
-fpu_regs_save_end:
- mov a2,(fpu_state_owner)
-#endif /* !CONFIG_LAZY_SAVE_FPU */
-
- btst __THREAD_USING_FPU,d1
- beq fpu_regs_init
- add TASK_THREAD+THREAD_FPU_STATE,a2
- FPU_RESTORE_ALL a2,d0
- rti
-
-fpu_regs_init:
- FPU_INIT_STATE_ALL
- add TASK_THREAD+THREAD_FPU_FLAGS,a2
- bset __THREAD_USING_FPU,(0,a2)
- rti
-
-fpu_used_in_kernel:
- and ~(EPSW_nAR|EPSW_FE),epsw
- nop
- nop
-
- add -4,sp
- SAVE_ALL
- mov -1,d0
- mov d0,(REG_ORIG_D0,fp)
-
- and ~EPSW_NMID,epsw
-
- mov fp,d0
- call fpu_disabled_in_kernel[],0
- jmp ret_from_exception
-
- .size fpu_disabled,.-fpu_disabled