Im unconvinced.
How about
writeback_cache_to_bus(void *low, int length,int flags)
flush_cache_of_bus(void *low, int length,int flags)
and adding the vremap_nocache option.
On a PC the routines do nothing, on other boxes they can do the work. Sort
of the way half the MMU hooks are null inlines on a PC, but exist to cope
with more annoying MMU's like the Sparc