Does this play nice with caches? I know some systems like ARM allow aliases in the MMU which will ensure cache coherency, but it is system dependent and a lazy implementation would just disable caching and slow down the code.
On physically addressed cache architectures, like all x86 implementations, this has no ill effects. With virtually addressed caches like on ARM, this is generally a bad idea.