DSPRelated.com
Forums

SEM_ipost hangs to code

Started by yati...@hotmail.com May 3, 2011
Hello,

Below is the isr code snippet I took from valley tech PCI dsp firmware. We are using this to understand DSP/BIOS. We are able to generate interrupt from the HOST but it hangs at " SEM_ipost(&PciDmaDataAvail);" and never goes further.

Any idea what might be the reason and does extern far keyword has any implication on this hang? "extern far SEM_Obj PciDmaDataAvail;"

What does extern far means? We are using internal SRAM to download the code.
//CODE SNIPPET
extern far SEM_Obj PciDmaDataAvail;

/*
* ======== isr ======= * interrupt service routine is runtime pluged in
*/
static Void isr(Void)
{
ChanHandle chan;
IOM_Packet *oldPacket;
C64XX_PCI_Request *oldReq;
Int status = IOM_EBADIO;

if (PCI_FGET(PCIIS, MASTEROK)) {
/* pci master transfer complete */
PCI_FSET(PCIIS, MASTEROK, 1);
status = IOM_COMPLETED;

}
else if (PCI_FGET(PCIIS, PCIMASTER)) {
/* pci master abort */
PCI_FSET(PCIIS, PCIMASTER, 1);

}
else if (PCI_FGET(PCIIS, PCITARGET)) {
/* pci target abort */
PCI_FSET(PCIIS, PCITARGET, 1);

}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- // VTI change
// TO BE USED ONLY AS AN EXAMPLE/REFERENCE
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /*
* VTI NOTE: Modifications done to this file are for example and referenece purposes ONLY.
* Such modifications have NOT been fully tested. VTI makes NO guarantee as to their
* correctness and validity.
*/
else if (PCI_FGET(PCIIS, HOSTSW)) {
/* pci host software generated int */
PCI_RSET(PCIIS, (PCI_PCIIS_HOSTSW_CLR << _PCI_PCIIS_HOSTSW_SHIFT));
//PCI_FSET(PCIIS, HOSTSW, 1);
SEM_ipost(&PciDmaDataAvail);
return;
}

_____________________________________