heathrow: convert to trace-events
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
		
							parent
							
								
									086df4f30a
								
							
						
					
					
						commit
						ec7c2709d7
					
				@ -26,16 +26,7 @@
 | 
				
			|||||||
#include "hw/hw.h"
 | 
					#include "hw/hw.h"
 | 
				
			||||||
#include "hw/ppc/mac.h"
 | 
					#include "hw/ppc/mac.h"
 | 
				
			||||||
#include "hw/intc/heathrow_pic.h"
 | 
					#include "hw/intc/heathrow_pic.h"
 | 
				
			||||||
 | 
					#include "trace.h"
 | 
				
			||||||
/* debug PIC */
 | 
					 | 
				
			||||||
//#define DEBUG_PIC
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifdef DEBUG_PIC
 | 
					 | 
				
			||||||
#define PIC_DPRINTF(fmt, ...)                                   \
 | 
					 | 
				
			||||||
    do { printf("PIC: " fmt , ## __VA_ARGS__); } while (0)
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define PIC_DPRINTF(fmt, ...)
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int heathrow_check_irq(HeathrowPICState *pic)
 | 
					static inline int heathrow_check_irq(HeathrowPICState *pic)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -61,7 +52,7 @@ static void heathrow_write(void *opaque, hwaddr addr,
 | 
				
			|||||||
    unsigned int n;
 | 
					    unsigned int n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    n = ((addr & 0xfff) - 0x10) >> 4;
 | 
					    n = ((addr & 0xfff) - 0x10) >> 4;
 | 
				
			||||||
    PIC_DPRINTF("writel: " TARGET_FMT_plx " %u: %08x\n", addr, n, value);
 | 
					    trace_heathrow_write(addr, n, value);
 | 
				
			||||||
    if (n >= 2)
 | 
					    if (n >= 2)
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    pic = &s->pics[n];
 | 
					    pic = &s->pics[n];
 | 
				
			||||||
@ -109,7 +100,7 @@ static uint64_t heathrow_read(void *opaque, hwaddr addr,
 | 
				
			|||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    PIC_DPRINTF("readl: " TARGET_FMT_plx " %u: %08x\n", addr, n, value);
 | 
					    trace_heathrow_read(addr, n, value);
 | 
				
			||||||
    return value;
 | 
					    return value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -124,24 +115,23 @@ static void heathrow_set_irq(void *opaque, int num, int level)
 | 
				
			|||||||
    HeathrowState *s = opaque;
 | 
					    HeathrowState *s = opaque;
 | 
				
			||||||
    HeathrowPICState *pic;
 | 
					    HeathrowPICState *pic;
 | 
				
			||||||
    unsigned int irq_bit;
 | 
					    unsigned int irq_bit;
 | 
				
			||||||
 | 
					    int last_level;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(DEBUG)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        static int last_level[64];
 | 
					 | 
				
			||||||
        if (last_level[num] != level) {
 | 
					 | 
				
			||||||
            PIC_DPRINTF("set_irq: num=0x%02x level=%d\n", num, level);
 | 
					 | 
				
			||||||
            last_level[num] = level;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    pic = &s->pics[1 - (num >> 5)];
 | 
					    pic = &s->pics[1 - (num >> 5)];
 | 
				
			||||||
    irq_bit = 1 << (num & 0x1f);
 | 
					    irq_bit = 1 << (num & 0x1f);
 | 
				
			||||||
 | 
					    last_level = (pic->levels & irq_bit) ? 1 : 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (level) {
 | 
					    if (level) {
 | 
				
			||||||
        pic->events |= irq_bit & ~pic->level_triggered;
 | 
					        pic->events |= irq_bit & ~pic->level_triggered;
 | 
				
			||||||
        pic->levels |= irq_bit;
 | 
					        pic->levels |= irq_bit;
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        pic->levels &= ~irq_bit;
 | 
					        pic->levels &= ~irq_bit;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (last_level != level) {
 | 
				
			||||||
 | 
					        trace_heathrow_set_irq(num, level);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    heathrow_update_irq(s);
 | 
					    heathrow_update_irq(s);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -186,3 +186,8 @@ nvic_complete_irq(int irq, bool secure) "NVIC complete IRQ %d (secure %d)"
 | 
				
			|||||||
nvic_set_irq_level(int irq, int level) "NVIC external irq %d level set to %d"
 | 
					nvic_set_irq_level(int irq, int level) "NVIC external irq %d level set to %d"
 | 
				
			||||||
nvic_sysreg_read(uint64_t addr, uint32_t value, unsigned size) "NVIC sysreg read addr 0x%" PRIx64 " data 0x%" PRIx32 " size %u"
 | 
					nvic_sysreg_read(uint64_t addr, uint32_t value, unsigned size) "NVIC sysreg read addr 0x%" PRIx64 " data 0x%" PRIx32 " size %u"
 | 
				
			||||||
nvic_sysreg_write(uint64_t addr, uint32_t value, unsigned size) "NVIC sysreg write addr 0x%" PRIx64 " data 0x%" PRIx32 " size %u"
 | 
					nvic_sysreg_write(uint64_t addr, uint32_t value, unsigned size) "NVIC sysreg write addr 0x%" PRIx64 " data 0x%" PRIx32 " size %u"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# hw/intc/heathrow_pic.c
 | 
				
			||||||
 | 
					heathrow_write(uint64_t addr, unsigned int n, uint64_t value) "0x%"PRIx64" %u: 0x%"PRIx64
 | 
				
			||||||
 | 
					heathrow_read(uint64_t addr, unsigned int n, uint64_t value) "0x%"PRIx64" %u: 0x%"PRIx64
 | 
				
			||||||
 | 
					heathrow_set_irq(int num, int level) "set_irq: num=0x%02x level=%d"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user