patch-2.2.15 linux/arch/alpha/kernel/ptrace.c
Next file: linux/arch/alpha/kernel/smc37c669.c
Previous file: linux/arch/alpha/kernel/process.c
Back to the patch index
Back to the overall index
- Lines: 41
- Date:
Fri Apr 21 12:45:44 2000
- Orig file:
v2.2.14/arch/alpha/kernel/ptrace.c
- Orig date:
Tue Jan 4 21:18:39 2000
diff -u --new-file --recursive --exclude-from ../../exclude v2.2.14/arch/alpha/kernel/ptrace.c linux/arch/alpha/kernel/ptrace.c
@@ -17,6 +17,7 @@
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/system.h>
+#include <asm/fpu.h>
#include "proto.h"
@@ -119,18 +120,30 @@
/*
* Get contents of register REGNO in task TASK.
*/
-static inline long
+static long
get_reg(struct task_struct * task, unsigned long regno)
{
+ /* Special hack for fpcr -- combine hardware and software bits. */
+ if (regno == 63) {
+ unsigned long fpcr = *get_reg_addr(task, regno);
+ unsigned long swcr = task->tss.flags & IEEE_SW_MASK;
+ swcr = swcr_update_status(swcr, fpcr);
+ return fpcr | swcr;
+ }
return *get_reg_addr(task, regno);
}
/*
* Write contents of register REGNO in task TASK.
*/
-static inline int
+static int
put_reg(struct task_struct *task, unsigned long regno, long data)
{
+ if (regno == 63) {
+ task->tss.flags = ((task->tss.flags & ~IEEE_SW_MASK)
+ | (data & IEEE_SW_MASK));
+ data = (data & FPCR_DYN_MASK) | ieee_swcr_to_fpcr(data);
+ }
*get_reg_addr(task, regno) = data;
return 0;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)