From: Alan Cox Date: Sat, 6 Oct 2018 19:31:29 +0000 (+0100) Subject: devide: use the new map_buffers interface X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=80cf85722fc15b585f3a4d6d960fc81db8081573;p=FUZIX.git 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 --- 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; }