Trying to use 8-bit counts is a nice optimization which fails when the
count is larger than 255, as is the case with clearing the flash block
in the AT45 driver. This bug resulted in the inability to erase
flights on TeleMetrum v1.0 boards.
Signed-off-by: Keith Packard <keithp@keithp.com>
-_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count);
+_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint16_t count);
#define ao_xmemcpy(d,s,c) _ao_xmemcpy(d,s,c)
void
#define ao_xmemcpy(d,s,c) _ao_xmemcpy(d,s,c)
void
-_ao_xmemset(__xdata void *dst, uint8_t value, uint8_t count);
+_ao_xmemset(__xdata void *dst, uint8_t value, uint16_t count);
#define ao_xmemset(d,v,c) _ao_xmemset(d,v,c)
int8_t
#define ao_xmemset(d,v,c) _ao_xmemset(d,v,c)
int8_t
-_ao_xmemcmp(__xdata void *a, __xdata void *b, uint8_t count);
+_ao_xmemcmp(__xdata void *a, __xdata void *b, uint16_t count);
#define ao_xmemcmp(d,s,c) _ao_xmemcmp((d), (s), (c))
#define ao_xmemcmp(d,s,c) _ao_xmemcmp((d), (s), (c))
-_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint8_t count)
+_ao_xmemcpy(__xdata void *dst, __xdata void *src, uint16_t count)
{
while (count--) {
*(__xdata uint8_t *) dst = *(__xdata uint8_t *) src;
{
while (count--) {
*(__xdata uint8_t *) dst = *(__xdata uint8_t *) src;
-_ao_xmemset(__xdata void *dst, uint8_t v, uint8_t count)
+_ao_xmemset(__xdata void *dst, uint8_t v, uint16_t count)
{
while (count--) {
*(__xdata uint8_t *) dst = v;
{
while (count--) {
*(__xdata uint8_t *) dst = v;
-_ao_xmemcmp(__xdata void *a, __xdata void *b, uint8_t count)
+_ao_xmemcmp(__xdata void *a, __xdata void *b, uint16_t count)
{
while (count--) {
int8_t d = *(__xdata int8_t *) a - *(__xdata int8_t *) b;
{
while (count--) {
int8_t d = *(__xdata int8_t *) a - *(__xdata int8_t *) b;