p->msg_stime  = msq->q_stime;
        p->msg_rtime  = msq->q_rtime;
        p->msg_ctime  = msq->q_ctime;
+#ifndef CONFIG_64BIT
+       p->msg_stime_high = msq->q_stime >> 32;
+       p->msg_rtime_high = msq->q_rtime >> 32;
+       p->msg_ctime_high = msq->q_ctime >> 32;
+#endif
        p->msg_cbytes = msq->q_cbytes;
        p->msg_qnum   = msq->q_qnum;
        p->msg_qbytes = msq->q_qbytes;
                struct compat_msqid64_ds v;
                memset(&v, 0, sizeof(v));
                to_compat_ipc64_perm(&v.msg_perm, &in->msg_perm);
-               v.msg_stime = in->msg_stime;
-               v.msg_rtime = in->msg_rtime;
-               v.msg_ctime = in->msg_ctime;
+               v.msg_stime      = lower_32_bits(in->msg_stime);
+               v.msg_stime_high = upper_32_bits(in->msg_stime);
+               v.msg_rtime      = lower_32_bits(in->msg_rtime);
+               v.msg_rtime_high = upper_32_bits(in->msg_rtime);
+               v.msg_ctime      = lower_32_bits(in->msg_ctime);
+               v.msg_ctime_high = upper_32_bits(in->msg_ctime);
                v.msg_cbytes = in->msg_cbytes;
                v.msg_qnum = in->msg_qnum;
                v.msg_qbytes = in->msg_qbytes;
 
                         int cmd, struct semid64_ds *semid64)
 {
        struct sem_array *sma;
+       time64_t semotime;
        int id = 0;
        int err;
 
        }
 
        kernel_to_ipc64_perm(&sma->sem_perm, &semid64->sem_perm);
-       semid64->sem_otime = get_semotime(sma);
+       semotime = get_semotime(sma);
+       semid64->sem_otime = semotime;
        semid64->sem_ctime = sma->sem_ctime;
+#ifndef CONFIG_64BIT
+       semid64->sem_otime_high = semotime >> 32;
+       semid64->sem_ctime_high = sma->sem_ctime >> 32;
+#endif
        semid64->sem_nsems = sma->sem_nsems;
 
        ipc_unlock_object(&sma->sem_perm);
                struct compat_semid64_ds v;
                memset(&v, 0, sizeof(v));
                to_compat_ipc64_perm(&v.sem_perm, &in->sem_perm);
-               v.sem_otime = in->sem_otime;
-               v.sem_ctime = in->sem_ctime;
+               v.sem_otime      = lower_32_bits(in->sem_otime);
+               v.sem_otime_high = upper_32_bits(in->sem_otime);
+               v.sem_ctime      = lower_32_bits(in->sem_ctime);
+               v.sem_ctime_high = upper_32_bits(in->sem_ctime);
                v.sem_nsems = in->sem_nsems;
                return copy_to_user(buf, &v, sizeof(v));
        } else {
 
        tbuf->shm_atime = shp->shm_atim;
        tbuf->shm_dtime = shp->shm_dtim;
        tbuf->shm_ctime = shp->shm_ctim;
+#ifndef CONFIG_64BIT
+       tbuf->shm_atime_high = shp->shm_atim >> 32;
+       tbuf->shm_dtime_high = shp->shm_dtim >> 32;
+       tbuf->shm_ctime_high = shp->shm_ctim >> 32;
+#endif
        tbuf->shm_cpid  = pid_vnr(shp->shm_cprid);
        tbuf->shm_lpid  = pid_vnr(shp->shm_lprid);
        tbuf->shm_nattch = shp->shm_nattch;
                struct compat_shmid64_ds v;
                memset(&v, 0, sizeof(v));
                to_compat_ipc64_perm(&v.shm_perm, &in->shm_perm);
-               v.shm_atime = in->shm_atime;
-               v.shm_dtime = in->shm_dtime;
-               v.shm_ctime = in->shm_ctime;
+               v.shm_atime      = lower_32_bits(in->shm_atime);
+               v.shm_atime_high = upper_32_bits(in->shm_atime);
+               v.shm_dtime      = lower_32_bits(in->shm_dtime);
+               v.shm_dtime_high = upper_32_bits(in->shm_dtime);
+               v.shm_ctime      = lower_32_bits(in->shm_ctime);
+               v.shm_ctime_high = upper_32_bits(in->shm_ctime);
                v.shm_segsz = in->shm_segsz;
                v.shm_nattch = in->shm_nattch;
                v.shm_cpid = in->shm_cpid;