|
@@ -24,6 +24,16 @@
|
|
* user_regset definitions.
|
|
* user_regset definitions.
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+static unsigned long user_txstatus(const struct pt_regs *regs)
|
|
|
|
+{
|
|
|
|
+ unsigned long data = (unsigned long)regs->ctx.Flags;
|
|
|
|
+
|
|
|
|
+ if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
|
|
|
|
+ data |= USER_GP_REGS_STATUS_CATCH_BIT;
|
|
|
|
+
|
|
|
|
+ return data;
|
|
|
|
+}
|
|
|
|
+
|
|
int metag_gp_regs_copyout(const struct pt_regs *regs,
|
|
int metag_gp_regs_copyout(const struct pt_regs *regs,
|
|
unsigned int pos, unsigned int count,
|
|
unsigned int pos, unsigned int count,
|
|
void *kbuf, void __user *ubuf)
|
|
void *kbuf, void __user *ubuf)
|
|
@@ -62,9 +72,7 @@ int metag_gp_regs_copyout(const struct pt_regs *regs,
|
|
if (ret)
|
|
if (ret)
|
|
goto out;
|
|
goto out;
|
|
/* TXSTATUS */
|
|
/* TXSTATUS */
|
|
- data = (unsigned long)regs->ctx.Flags;
|
|
|
|
- if (regs->ctx.SaveMask & TBICTX_CBUF_BIT)
|
|
|
|
- data |= USER_GP_REGS_STATUS_CATCH_BIT;
|
|
|
|
|
|
+ data = user_txstatus(regs);
|
|
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
|
ret = user_regset_copyout(&pos, &count, &kbuf, &ubuf,
|
|
&data, 4*25, 4*26);
|
|
&data, 4*25, 4*26);
|
|
if (ret)
|
|
if (ret)
|
|
@@ -119,6 +127,7 @@ int metag_gp_regs_copyin(struct pt_regs *regs,
|
|
if (ret)
|
|
if (ret)
|
|
goto out;
|
|
goto out;
|
|
/* TXSTATUS */
|
|
/* TXSTATUS */
|
|
|
|
+ data = user_txstatus(regs);
|
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
|
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
|
|
&data, 4*25, 4*26);
|
|
&data, 4*25, 4*26);
|
|
if (ret)
|
|
if (ret)
|