Merge pull request #78 from fdesbiens/fix-nor-cache-size-check

Fixed NOR extended cache size validation
This commit is contained in:
Frédéric Desbiens
2026-06-29 11:04:42 -04:00
committed by GitHub
2 changed files with 28 additions and 9 deletions
@@ -9,6 +9,8 @@
* SPDX-License-Identifier: MIT
**************************************************************************/
// Some portions generated by Codex (GPT-5).
/**************************************************************************/
/**************************************************************************/
@@ -93,8 +95,11 @@ ULONG block_word;
#endif
/* Calculate cache size in words. */
cache_size = size / sizeof(ULONG);
/* Determine if memory was specified but with an invalid size (less than one NOR sector). */
if ((memory) && (size < LX_NOR_SECTOR_SIZE))
if ((memory) && (cache_size < LX_NOR_SECTOR_SIZE))
{
/* Error in memory size supplied. */
@@ -110,9 +115,6 @@ ULONG block_word;
/* Initialize the internal NOR cache. */
nor_flash -> lx_nor_flash_extended_cache_entries = 0;
/* Calculate cache size in words. */
cache_size = size/sizeof(ULONG);
/* Setup cache memory pointer. */
cache_memory = (ULONG *) memory;
@@ -317,5 +319,3 @@ ULONG block_word;
return(LX_DISABLED);
#endif
}
+22 -3
View File
@@ -9,6 +9,8 @@
/* SPDX-License-Identifier: MIT */
/***************************************************************************/
// Some portions generated by Codex (GPT-5).
/* Basic NOR flash tests... */
#include <stdio.h>
@@ -31,6 +33,7 @@ ULONG readbuffer[128];
UCHAR nor_cache_memory[2048+16+8];
UCHAR nor_cache_memory2[8192];
UCHAR nor_cache_memory_invalid[256];
/* Define LevelX NOR flash simulator prototoypes. */
@@ -1592,7 +1595,25 @@ status += lx_nor_flash_extended_cache_enable(&nor_sim_flash, nor_cache_memory, s
/* Open the flash. */
status = lx_nor_flash_open(&nor_sim_flash, "sim nor flash", _lx_nor_flash_simulator_initialize);
#ifndef LX_NOR_DISABLE_EXTENDED_CACHE
status += lx_nor_flash_extended_cache_enable(&nor_sim_flash, nor_cache_memory2, sizeof(nor_cache_memory2));
if (status == LX_SUCCESS)
{
status = lx_nor_flash_extended_cache_enable(&nor_sim_flash, nor_cache_memory_invalid, sizeof(nor_cache_memory_invalid));
if (status != LX_ERROR)
{
printf("FAILED!\n");
#ifdef BATCH_TEST
exit(1);
#endif
while(1)
{
}
}
status = lx_nor_flash_extended_cache_enable(&nor_sim_flash, nor_cache_memory2, sizeof(nor_cache_memory2));
}
#endif
if (status != LX_SUCCESS)
@@ -1668,5 +1689,3 @@ status += lx_nor_flash_extended_cache_enable(&nor_sim_flash, nor_cache_memory2,
{
}
}