mirror of
https://github.com/ringtailsoftware/uvm32.git
synced 2026-06-05 22:43:39 +00:00
66 lines
1.3 KiB
C
66 lines
1.3 KiB
C
#include "uvm32_target.h"
|
|
#include "malloc_freelist.h"
|
|
|
|
uint32_t* extram = (uint32_t*)UVM32_EXTRAM_BASE;
|
|
uint32_t extram_len = HEAP_SIZE;
|
|
|
|
void* memcpy(void* dst, const void* src, int len) {
|
|
uint8_t* d = (uint8_t*)dst;
|
|
const uint8_t* s = (const uint8_t*)src;
|
|
while (len--) {
|
|
*(d++) = *(s++);
|
|
}
|
|
return dst;
|
|
}
|
|
|
|
void* memset(void* buf, int c, int len) {
|
|
uint8_t* b = (uint8_t*)buf;
|
|
while (len--) {
|
|
*(b++) = c;
|
|
}
|
|
return buf;
|
|
}
|
|
|
|
void* memmove(void* dest, const void* src, size_t len) {
|
|
char* d = dest;
|
|
const char* s = src;
|
|
if (d < s)
|
|
while (len--)
|
|
*d++ = *s++;
|
|
else {
|
|
const char* lasts = s + (len - 1);
|
|
char* lastd = d + (len - 1);
|
|
while (len--)
|
|
*lastd-- = *lasts--;
|
|
}
|
|
return dest;
|
|
}
|
|
|
|
void force_crash(void) {
|
|
uint8_t *p = (uint8_t *)0;
|
|
p[0] = 0;
|
|
}
|
|
|
|
void main(void) {
|
|
malloc_addblock(extram, extram_len);
|
|
|
|
uint8_t* p1 = fl_malloc(128);
|
|
if (p1 == NULL) {
|
|
println("malloc failed");
|
|
} else {
|
|
println("malloc ok");
|
|
}
|
|
memset(p1, 'a', 128);
|
|
fl_free(p1);
|
|
|
|
uint8_t* p2 = fl_malloc(256);
|
|
if (p2 == NULL) {
|
|
println("malloc failed");
|
|
} else {
|
|
println("malloc ok");
|
|
}
|
|
memset(p2, 'b', 256);
|
|
fl_free(p2);
|
|
|
|
//force_crash(); // allows dump to be inspected
|
|
}
|