From 80cf85722fc15b585f3a4d6d960fc81db8081573 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 6 Oct 2018 20:31:29 +0100 Subject: [PATCH] devide: use the new map_buffers interface This means everyone now needs a map_buffers but as it's a no-op for most systems and not a critical path it shouldn't be a big deal. Given how useful external buffers are on many systems it's worth it --- Kernel/dev/devide.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/Kernel/dev/devide.c b/Kernel/dev/devide.c index cf27f0ea..00416bd3 100644 --- a/Kernel/dev/devide.c +++ b/Kernel/dev/devide.c @@ -156,16 +156,18 @@ void devide_read_data(void) __naked jr nz, not_swapin ld a, (_blk_op+BLKPARAM_SWAP_PAGE) ; blkparam.swap_page call map_for_swap - jr swapin + jr doread not_swapin: #endif or a ; test is_user - call nz, map_process_always ; map user memory first if required -swapin: + jr z, rd_kernel + call map_process_always ; map user memory first if required + jr doread +rd_kernel: + call map_buffers +doread: inir ; transfer first 256 bytes inir ; transfer second 256 bytes - or a ; test is_user - ret z ; done if kernel memory transfer jp map_kernel ; else map kernel then return __endasm; } @@ -182,16 +184,18 @@ void devide_write_data(void) __naked jr nz, not_swapout ld a, (_blk_op+BLKPARAM_SWAP_PAGE) ; blkparam.swap_page call map_for_swap - jr swapout + jr dowrite not_swapout: #endif or a ; test is_user - call nz, map_process_always ; else map user memory first if required -swapout: + jr z, wr_kernel + call map_process_always ; else map user memory first if required + jr dowrite +wr_kernel: + call map_buffers +dowrite: otir ; transfer first 256 bytes otir ; transfer second 256 bytes - or a ; test is_user - ret z ; done if kernel memory transfer jp map_kernel ; else map kernel then return __endasm; } -- 2.34.1