diff options
Diffstat (limited to 'sys/riscv/riscv/uio_machdep.c')
-rw-r--r-- | sys/riscv/riscv/uio_machdep.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/riscv/riscv/uio_machdep.c b/sys/riscv/riscv/uio_machdep.c index 2e6ed2337fc5..002685c98ccf 100644 --- a/sys/riscv/riscv/uio_machdep.c +++ b/sys/riscv/riscv/uio_machdep.c @@ -95,18 +95,26 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio) switch (uio->uio_segflg) { case UIO_USERSPACE: maybe_yield(); - if (uio->uio_rw == UIO_READ) + switch (uio->uio_rw) { + case UIO_READ: error = copyout(cp, iov->iov_base, cnt); - else + break; + case UIO_WRITE: error = copyin(iov->iov_base, cp, cnt); + break; + } if (error) goto out; break; case UIO_SYSSPACE: - if (uio->uio_rw == UIO_READ) + switch (uio->uio_rw) { + case UIO_READ: bcopy(cp, iov->iov_base, cnt); - else + break; + case UIO_WRITE: bcopy(iov->iov_base, cp, cnt); + break; + } break; case UIO_NOCOPY: break; |