summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/sbefw/sbecmdmemaccess.C10
-rw-r--r--src/test/testcases/testAduMem_124B.py62
2 files changed, 23 insertions, 49 deletions
diff --git a/src/sbefw/sbecmdmemaccess.C b/src/sbefw/sbecmdmemaccess.C
index 93126d49..a71fe671 100644
--- a/src/sbefw/sbecmdmemaccess.C
+++ b/src/sbefw/sbecmdmemaccess.C
@@ -45,7 +45,7 @@
using namespace fapi2;
// Buffer requirement for ADU and PBA on the stack
-constexpr uint32_t MAX_ADU_BUFFER = 10; // 0bytes
+constexpr uint32_t MAX_ADU_BUFFER = 5; // 40bytes
constexpr uint32_t MAX_PBA_BUFFER = 32;
// PBA / ADU Granule size as per the HWP Requirement
constexpr uint32_t PBA_GRAN_SIZE_BYTES = 128;
@@ -454,9 +454,9 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr,
(i_isFlagRead ?
SBE_MEM_ACCESS_READ :
SBE_MEM_ACCESS_WRITE),
- l_granuleSize);
+ ADU_GRAN_SIZE_BYTES);
// 8Byte granule for ADU access
- uint32_t l_dataFifo[MAX_ADU_BUFFER] = {0};
+ uint64_t l_dataFifo[MAX_ADU_BUFFER] = {0};
while (l_granulesCompleted < l_lenCacheAligned)
{
// With ECC or ITAG the output length of a granule will become
@@ -495,7 +495,7 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr,
// If this is putmem request, read input data from the upstream FIFO
if (!i_isFlagRead)
{
- // l_sizeMultiplier * 4B Upstream FIFO = Granule size 128B
+ // l_sizeMultiplier * 4B Upstream FIFO = Granule size 8B
uint32_t l_len2dequeue = l_sizeMultiplier;
l_rc = sbeUpFifoDeq_mult (l_len2dequeue,
(uint32_t *)&l_dataFifo,
@@ -537,7 +537,7 @@ uint32_t processAduRequest(const sbeMemAccessReqMsgHdr_t &i_hdr,
}
l_fapiRc = l_ADUInterface.accessWithBuffer(
&(((uint8_t *)&(l_dataFifo))[l_bufIdx]),
- l_granuleSize,
+ ADU_GRAN_SIZE_BYTES,
(l_granulesCompleted == (l_lenCacheAligned-1)));
// if error
if( (l_fapiRc != FAPI2_RC_SUCCESS) )
diff --git a/src/test/testcases/testAduMem_124B.py b/src/test/testcases/testAduMem_124B.py
index 9d6cd146..f89c05fd 100644
--- a/src/test/testcases/testAduMem_124B.py
+++ b/src/test/testcases/testAduMem_124B.py
@@ -35,52 +35,26 @@ err = False
def main( ):
testUtil.runCycles( 10000000 )
-# Test case 1: 1byte access
- #PutMemAdu Test
- data = os.urandom(1)
- data = [ord(c) for c in data]
- testMemProcUtil.putmem(0x08000000, data, 0xA5)
+# Test case 1: Valid lengths
+ bytes = [1, 2, 4]
+ offsets = {1:(0, 1, 2, 3, 4, 5, 6, 7), 2:(0, 2, 4, 6), 4:(0, 4)}
+ for byte in bytes:
+ for offset in offsets[byte]:
+ #PutMemAdu Test
+ data = os.urandom(byte)
+ data = [ord(c) for c in data]
+ testMemProcUtil.putmem(0x08000000 + offset, data, 0xA5)
- # GetMemAdu test
- readData = testMemProcUtil.getmem(0x08000000, 1, 0xA5)
- if(data == readData):
- print ("Success - Write-Read ADU 1byte")
- else:
- print data
- print readData
- raise Exception('data mistmach')
-
-# Test case 2: 2byte access
- #PutMemAdu Test
- data = os.urandom(2)
- data = [ord(c) for c in data]
- testMemProcUtil.putmem(0x08000000, data, 0xA5)
-
- # GetMemAdu test
- readData = testMemProcUtil.getmem(0x08000000, 2, 0xA5)
- if(data == readData):
- print ("Success - Write-Read ADU 2byte")
- else:
- print data
- print readData
- raise Exception('data mistmach')
-
-# Test case 3: 4byte access
- #PutMemAdu Test
- data = os.urandom(4)
- data = [ord(c) for c in data]
- testMemProcUtil.putmem(0x08000000, data, 0xA5)
-
- # GetMemAdu test
- readData = testMemProcUtil.getmem(0x08000000, 4, 0xA5)
- if(data == readData):
- print ("Success - Write-Read ADU 4byte")
- else:
- print data
- print readData
- raise Exception('data mistmach')
+ # GetMemAdu test
+ readData = testMemProcUtil.getmem(0x08000000 + offset, byte, 0xA5)
+ if(data == readData):
+ print ("Success - Write-Read ADU byte["+str(byte)+"] offset[" + str(offset)+"]")
+ else:
+ print [hex(a) for a in data]
+ print [hex(a) for a in readData]
+ raise Exception('data mistmach')
-# Test case 4: Invalid length - 3
+# Test case 2: Invalid length - 3
# GetMemAdu test
testMemProcUtil.getmem_failure(0x08000000, 3, 0xA5, 0x0002000A)
print ("Success - invalid length test")
OpenPOWER on IntegriCloud