So don't syscall. Darwin has a system similar to io_uring for this.
(But it also has a 16KB page size.)
Probably still cause a page fault when the memory is re-accessed though. I suspect even using io_uring will still be a lot slower than bzero if you're just zeroing out 2 pages of memory. Zeroing memory is really fast.
Memcpy, bzero and friends are insanely fast. Practically free when those bytes are in the cpu’s cache already.