Only read it on the attempt to deliver signal in ast(). If the word is set, signal is not delivered and word is kept, preventing interruption of interruptible sleeps by signals until userspace calls sigfastblock(UNBLOCK).
This way, the only spurious EINTR that userspace can see while in critical section is on first interruptible sleep, if a signal is pending. It is believed that it is not important for rtld and lbithr critical sections. It might be visible for the application code e.g. for the callback of dl_iterate_phdr(3), but again the belief is that the non-compliance is acceptable.
For now I added the knob to enable the word read on syscall entry to be able to diagnose possible issues due to spurious EINTR.
[This is not tested]