fix hang in USB interrupt (disabled for now)

This commit is contained in:
Markus Fröschle
2016-12-11 10:35:51 +00:00
parent 7161ed3b55
commit 8e768bc746
9 changed files with 145 additions and 127 deletions

View File

@@ -36,8 +36,9 @@
#include "util.h"
#include "dma.h"
#include "pci.h"
#include <stdarg.h>
// // #define DEBUG
// #define DEBUG
#include "debug.h"
#ifndef MAX_ISR_ENTRY
@@ -434,14 +435,29 @@ bool pciarb_interrupt_handler(void *arg1, void *arg2)
return true;
}
bool xlbarb_interrupt_handler(void *arg1, void *arg2)
bool xlbarb_interrupt_handler(void *arg1, void *arg2, ...)
{
va_list args;
int i;
uint32_t status = MCF_XLB_XARB_SR;
dbg("arg1=0x%08x arg2=0x%08x\r\n", arg1, arg2);
va_start(args, arg2);
for (i = 0; i < 20; i++)
{
dbg("arg[%d]=0x%08x\r\n", i, va_arg(args, int));
}
va_end(args);
/*
* TODO: we should probably issue a bus error when this occors
*/
err("XLB arbiter interrupt. XARB_ADRCAP=0x%08lx\r\n", MCF_XLB_XARB_ADRCAP);
err("XLB arbiter interrupt.\r\n");
err("XARB_ADRCAP=0x%08lx\r\n", MCF_XLB_XARB_ADRCAP);
err("XARB_SIGCAP=0x%08lx\r\n", MCF_XLB_XARB_SIGCAP);
MCF_XLB_XARB_ADRCAP = 0x0L;
MCF_XLB_XARB_SIGCAP = 0x0L;
if (status & MCF_XLB_XARB_SR_AT)
err("address tenure timeout\r\n");