New patch with significant change in exmem stubs.
It turned out that current vx exmem_alloc stubs were actually what I called exmem_ualloc (allocating uncached allocation). The same named DryOS stubs are okay. As old vx models (12 of them) don't have a cached version of exmem_alloc, I decided to switch the CHDK exmem_alloc and exmem_free to use the uncached stubs.
The patch
- removes exmem_free from stubs_entry.S
- adds exmem_ualloc and exmem_ufree to stubs_entry.S
- adds exmem_ualloc and exmem_ufree stubs to the 3 newest models manually
- makes the CHDK core version of exmem_alloc and exmem_free use the uncached fw functions
- keeps the cached exmem_alloc stubs as they are used by OPT_EXMEM_MALLOC code
So, the exmem allocator now consistently returns an uncached allocation on all models.
I changed the backup/restore module accordingly.
Also removed the card related warnings from help text and made them red warnings that show up on first launch of the module when needed.
I have not done extensive testing yet.
edit: Another early thread about that, with some specific models mentioned https://chdk.setepontos.com/index.php?topic=2483.0
Models mentioned there happen to be cams without cached exmem_alloc, interesting coincidence.
Warn in the status message area on the >2gb and >32gb cases (but I'm not sure we have a way to know from code which applies)
r47 cameras have P-ID above 0x3222, so this is implemented (but untested).