tile: comment assumption about __insn_mtspr for <asm/irqflags.h>
The arch_local_irq_save(), etc., routines are required to function as compiler barriers. They do, but it's subtle and requires knowing that the gcc builtin __insn_mtspr() is marked as a memory clobber. Provide a comment explaining the assumption. Signed-off-by: Chris Metcalf <cmetcalf@tilera.com> [ This came about from me wondering about the synchronization rules of __insn_mtspr() - Linus ] Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									84ee9805bc
								
							
						
					
					
						commit
						3e2e0d2c22
					
				| @ -40,7 +40,15 @@ | ||||
| #include <asm/percpu.h> | ||||
| #include <arch/spr_def.h> | ||||
| 
 | ||||
| /* Set and clear kernel interrupt masks. */ | ||||
| /*
 | ||||
|  * Set and clear kernel interrupt masks. | ||||
|  * | ||||
|  * NOTE: __insn_mtspr() is a compiler builtin marked as a memory | ||||
|  * clobber.  We rely on it being equivalent to a compiler barrier in | ||||
|  * this code since arch_local_irq_save() and friends must act as | ||||
|  * compiler barriers.  This compiler semantic is baked into enough | ||||
|  * places that the compiler will maintain it going forward. | ||||
|  */ | ||||
| #if CHIP_HAS_SPLIT_INTR_MASK() | ||||
| #if INT_PERF_COUNT < 32 || INT_AUX_PERF_COUNT < 32 || INT_MEM_ERROR >= 32 | ||||
| # error Fix assumptions about which word various interrupts are in | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user