What kind of memory barrier should be followed by writes ICC_SGI1R_EL1?

As we all know, ICC_SGI1R_EL1 is used to produce another core's interrupt.

I am a software engineer.

My question is what kind of memory barrier should be followed by writes ICC_SGI1R_EL1?

This question related to the implementation of the instruction "MSR ICC_SGI1R_EL1, x".

If the instruction actually write the memory mapped register, should we use data memory barrier?

Parents
  • I doubt there is a memory barrier needed for this register. Memory barrier is needed if  the delayed effect of writing might cause problems.
    For example if you use shared memory to store information, do the SGI and another core reads this memory. Then you might need a "DMB" _before_ SGI. But not after. As the current core does not rely on it.
    Different example is changing MMU config, then you need the DMB _after_ changing it, to be sure the next insn sees the effect.

Reply
  • I doubt there is a memory barrier needed for this register. Memory barrier is needed if  the delayed effect of writing might cause problems.
    For example if you use shared memory to store information, do the SGI and another core reads this memory. Then you might need a "DMB" _before_ SGI. But not after. As the current core does not rely on it.
    Different example is changing MMU config, then you need the DMB _after_ changing it, to be sure the next insn sees the effect.

Children