BF706 - clearing interrupt using DMA access from SPORT in assembly

I am using DMA access from the sport. The version in C works fine, but the one in assembly does not. It doesn't clear the interrupt, and as soon as it exits from the ISR it vectors back again. I am writing 1 to the DMA1_STAT register to clear it (1 to clear), but the ISR is being triggered not just when the DMA buffer is full, but also by the SPORT. Can't seem to disable this. I note that IPEND.IRPTEN =1 for the assembly version but not for the C code. Any help would be much appreciated.