powerpc: Use correct ccr bit for syscall error status

The powerpc implementations of syscall_get_error and
syscall_set_return_value should use CCR0:S0 (0x10000000) for testing
and setting syscall error status.  Fortunately these APIs don't seem
to be used at the moment.

Signed-off-by: Nathan Lynch <ntl@pobox.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
Nathan Lynch 2010-03-12 13:16:02 +00:00 коммит произвёл Benjamin Herrenschmidt
Родитель d6a8536a93
Коммит 409d241b7b
1 изменённых файлов: 3 добавлений и 3 удалений

Просмотреть файл

@ -30,7 +30,7 @@ static inline void syscall_rollback(struct task_struct *task,
static inline long syscall_get_error(struct task_struct *task, static inline long syscall_get_error(struct task_struct *task,
struct pt_regs *regs) struct pt_regs *regs)
{ {
return (regs->ccr & 0x1000) ? -regs->gpr[3] : 0; return (regs->ccr & 0x10000000) ? -regs->gpr[3] : 0;
} }
static inline long syscall_get_return_value(struct task_struct *task, static inline long syscall_get_return_value(struct task_struct *task,
@ -44,10 +44,10 @@ static inline void syscall_set_return_value(struct task_struct *task,
int error, long val) int error, long val)
{ {
if (error) { if (error) {
regs->ccr |= 0x1000L; regs->ccr |= 0x10000000L;
regs->gpr[3] = -error; regs->gpr[3] = -error;
} else { } else {
regs->ccr &= ~0x1000L; regs->ccr &= ~0x10000000L;
regs->gpr[3] = val; regs->gpr[3] = val;
} }
} }