If anyone was wandering, switching to AIX 6.1 did the trick. Documentation for 6.1 states that mprotect for text segment will work with MPROTECT_TXT env variable set to ON and it does. Documentation...
I don't think that's the problem since the routine works well when performed on non-text segment (for example on page which contains area acquired via malloc).