Update of /cvsroot/lapetus/lapetus/tests/regtest
In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29339
Modified Files:
scu.c scu.h
Log Message:
-Added Indirect DMA test
-Changed a couple of values to use defines. Makes things look more cleaner
Index: scu.h
===================================================================
RCS file: /cvsroot/lapetus/lapetus/tests/regtest/scu.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- scu.h 12 Jan 2008 18:17:51 -0000 1.3
+++ scu.h 18 Feb 2008 23:19:55 -0000 1.4
@@ -44,6 +44,7 @@
void TestDMA1();
void TestDMA2();
void TestDMAMisalignment();
+void TestIndirectDMA();
void TestISTandIMS();
void TestDSP();
void TestMVI_Imm_d();
Index: scu.c
===================================================================
RCS file: /cvsroot/lapetus/lapetus/tests/regtest/scu.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- scu.c 12 Jan 2008 23:11:17 -0000 1.4
+++ scu.c 18 Feb 2008 23:19:55 -0000 1.5
@@ -156,7 +156,7 @@
RegisterTest(&TestDMA1, "DMA 1 transfer");
RegisterTest(&TestDMA2, "DMA 2 transfer");
RegisterTest(&TestDMAMisalignment, "Misaligned DMA transfer");
-// RegisterTest(&TestIndirectDMA, "Indirect DMA transfer");
+ RegisterTest(&TestIndirectDMA, "Indirect DMA transfer");
// RegisterTest(&TestTransNum0, "0 Transfer Number transfer");
// RegisterTest(&TestDMAStatus, "DMA Status Register");
// Test out DMA start factors here
@@ -470,7 +470,7 @@
*((volatile u32 *)0x260F0000) = dmavaltest;
BIOS_SetSCUInterrupt(0x4B, dmaint);
- BIOS_ChangeSCUInterruptMask(~0x800, 0);
+ BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0);
stagestatus = STAGESTAT_WAITINGFORINT;
// Do a quick DMA
@@ -493,7 +493,7 @@
*((volatile u32 *)0x260F0000) = dmavaltest;
BIOS_SetSCUInterrupt(0x4A, dmaint);
- BIOS_ChangeSCUInterruptMask(~0x400, 0);
+ BIOS_ChangeSCUInterruptMask(~MASK_DMA1, 0);
stagestatus = STAGESTAT_WAITINGFORINT;
// Do a quick DMA
@@ -516,7 +516,7 @@
*((volatile u32 *)0x260F0000) = dmavaltest;
BIOS_SetSCUInterrupt(0x49, dmaint);
- BIOS_ChangeSCUInterruptMask(~0x200, 0);
+ BIOS_ChangeSCUInterruptMask(~MASK_DMA2, 0);
stagestatus = STAGESTAT_WAITINGFORINT;
// Do a quick DMA
@@ -540,7 +540,7 @@
dmavaltest = 0x02030405;
BIOS_SetSCUInterrupt(0x4B, dmaint);
- BIOS_ChangeSCUInterruptMask(~0x800, 0);
+ BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0);
stagestatus = STAGESTAT_WAITINGFORINT;
// Do a quick DMA
@@ -557,6 +557,46 @@
//////////////////////////////////////////////////////////////////////////////
+void TestIndirectDMA()
+{
+ static u32 dmaarray[3 * 3];
+ static u32 dmadataarray[] = {
+ 0x02030405,
+ 0x0708090A,
+ 0x0C0D0E0F,
+ };
+ int i;
+
+ InterruptSetLevelMask(0xF);
+
+ BIOS_SetSCUInterrupt(0x4B, dmaint);
+ BIOS_ChangeSCUInterruptMask(~MASK_DMA0, 0);
+ stagestatus = STAGESTAT_WAITINGFORINT;
+
+ dmaarray[0] = 1;
+ dmaarray[1] = 0x25C40000;
+ dmaarray[2] = (u32)dmadataarray;
+
+ dmaarray[3] = 2;
+ dmaarray[4] = 0x25C40001;
+ dmaarray[5] = (u32)dmadataarray+1;
+
+ dmaarray[6] = 1;
+ dmaarray[7] = 0x05C40003;
+ dmaarray[8] = 0x80000000 | ((u32)dmadataarray+3);
+
+ // Do an Indirect DMA
+ SCUREG_D0EN = 0;
+ SCUREG_D0W = ((u32)dmaarray);
+ SCUREG_D0AD = 0x101;
+ SCUREG_D0MD = 0x01000007;
+ SCUREG_D0EN = 0x101;
+
+ InterruptSetLevelMask(0x4);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+
void TestISTandIMS()
{
// Mask All interrupts
|