hw/intc/arm_gic: Fix GIC_SET_LEVEL
The GIC_SET_LEVEL macro unfortunately overwrote the entire level bitmask instead of just or'ing on the necessary bits, causing active level PPIs on a core to clear PPIs on other cores. Cc: qemu-stable@nongnu.org Reported-by: Rob Herring <rob.herring@linaro.org> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org> Message-id: 1393031030-8692-1-git-send-email-christoffer.dall@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
		
							parent
							
								
									c10f7fc3d1
								
							
						
					
					
						commit
						6453fa998a
					
				| 
						 | 
				
			
			@ -40,7 +40,7 @@
 | 
			
		|||
#define GIC_SET_MODEL(irq) s->irq_state[irq].model = true
 | 
			
		||||
#define GIC_CLEAR_MODEL(irq) s->irq_state[irq].model = false
 | 
			
		||||
#define GIC_TEST_MODEL(irq) s->irq_state[irq].model
 | 
			
		||||
#define GIC_SET_LEVEL(irq, cm) s->irq_state[irq].level = (cm)
 | 
			
		||||
#define GIC_SET_LEVEL(irq, cm) s->irq_state[irq].level |= (cm)
 | 
			
		||||
#define GIC_CLEAR_LEVEL(irq, cm) s->irq_state[irq].level &= ~(cm)
 | 
			
		||||
#define GIC_TEST_LEVEL(irq, cm) ((s->irq_state[irq].level & (cm)) != 0)
 | 
			
		||||
#define GIC_SET_EDGE_TRIGGER(irq) s->irq_state[irq].edge_trigger = true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue