u32 totalswap;
u32 freeswap;
unsigned short procs;
- char _f[22];
+ unsigned short pads;
+ u32 totalhigh;
+ u32 freehigh;
+ unsigned int mem_unit;
+ char _f[8];
};
extern asmlinkage int sys_sysinfo(struct sysinfo *info);
err |= __put_user (s.totalswap, &info->totalswap);
err |= __put_user (s.freeswap, &info->freeswap);
err |= __put_user (s.procs, &info->procs);
+ err |= __put_user (s.totalhigh, &info->totalhigh);
+ err |= __put_user (s.freehigh, &info->freehigh);
+ err |= __put_user (s.mem_unit, &info->mem_unit);
if (err)
return -EFAULT;
return ret;
tmp.__st_ino = (u32)stat->ino;
tmp.st_mode = stat->mode;
tmp.st_nlink = (unsigned int)stat->nlink;
- tmp.uid = stat->uid;
- tmp.gid = stat->gid;
+ tmp.st_uid = stat->uid;
+ tmp.st_gid = stat->gid;
tmp.st_rdev = huge_encode_dev(stat->rdev);
- tmp.st_size = stat->st_size;
+ tmp.st_size = stat->size;
tmp.st_blksize = (u32)stat->blksize;
tmp.st_blocks = (u32)stat->blocks;
tmp.st_atime = (u32)stat->atime.tv_sec;
{
unsigned long clone_flags;
unsigned long newsp;
- struct task_struct *p;
int *parent_tidptr, *child_tidptr;
clone_flags = regs.gprs[3] & 0xffffffffUL;
child_tidptr = (int *) (regs.gprs[5] & 0x7fffffffUL);
if (!newsp)
newsp = regs.gprs[15];
- p = do_fork(clone_flags & ~CLONE_IDLETASK, newsp, ®s, 0,
- parent_tidptr, child_tidptr);
- return IS_ERR(p) ? PTR_ERR(p) : p->pid;
+ return do_fork(clone_flags & ~CLONE_IDLETASK, newsp, ®s, 0,
+ parent_tidptr, child_tidptr);
}
+
+
/* Fake a 31 bit psw address. */
tmp = (__u32) __KSTK_PTREGS(child)->psw.addr |
PSW32_ADDR_AMODE31;
- } else
+ } else if (addr < (addr_t) &dummy32->regs.acrs[0]) {
+ /* gpr 0-15 */
tmp = *(__u32 *)((addr_t) __KSTK_PTREGS(child) +
addr*2 + 4);
+ } else if (addr < (addr_t) &dummy32->regs.orig_gpr2) {
+ offset = PT_ACR0 + addr - (addr_t) &dummy32->regs.acrs;
+ tmp = *(__u32*)((addr_t) __KSTK_PTREGS(child) + offset);
+ } else {
+ /* orig gpr 2 */
+ offset = PT_ORIGGPR2 + 4;
+ tmp = *(__u32*)((addr_t) __KSTK_PTREGS(child) + offset);
+ }
} else if (addr >= (addr_t) &dummy32->regs.fp_regs &&
addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
/*
/* Build a 64 bit psw address from 31 bit address. */
__KSTK_PTREGS(child)->psw.addr =
(__u64) tmp & PSW32_ADDR_INSN;
- } else
+ } else if (addr < (addr_t) &dummy32->regs.acrs[0]) {
+ /* gpr 0-15 */
*(__u32*)((addr_t) __KSTK_PTREGS(child) + addr*2 + 4) =
tmp;
+ } else if (addr < (addr_t) &dummy32->regs.orig_gpr2) {
+ offset = PT_ACR0 + addr - (addr_t) &dummy32->regs.acrs;
+ *(__u32*)((addr_t) __KSTK_PTREGS(child) + offset) = tmp;
+ } else {
+ offset = PT_ORIGGPR2 + 4;
+ *(__u32*)((addr_t) __KSTK_PTREGS(child) + offset) = tmp;
+ }
} else if (addr >= (addr_t) &dummy32->regs.fp_regs &&
addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
/*