Estoy escribiendo un JIT en ARM Linux que ejecuta un conjunto de instrucciones que contiene código de auto modificación. El conjunto de instrucciones no tiene ninguna instrucción de vaciado de caché (similar a x86 a ese respecto).¿Protege mprotect la memoria caché de instrucciones en ARM Linux?
Si escribo un código en una página y luego llamo al mprotect
en esa página, ¿eso es suficiente para invalidar la caché de instrucciones? ¿O también necesito usar la llamada de sistema cacheflush
en esas páginas?
Hmm, mi objetivo es ARMv5 nominalmente. De acuerdo con ARM ARM, necesita vaciar el caché de instrucciones en el caso de código de modificación automática. Me pregunto si mprotect lo hará por mí. –