mirror of
https://github.com/ringtailsoftware/uvm32.git
synced 2026-06-06 15:03:40 +00:00
48 lines
1.4 KiB
C
48 lines
1.4 KiB
C
#include "uvm32_target.h"
|
|
#include "../shared.h"
|
|
|
|
void main(void) {
|
|
switch(syscall(SYSCALL_PICKTEST, 0, 0)) {
|
|
case TEST1: {
|
|
uint32_t *p = (uint32_t *)UVM32_EXTRAM_BASE;
|
|
|
|
// read memory and print via syscall
|
|
printdec(*p);
|
|
// modify memory
|
|
*p = *p * 2;
|
|
} break;
|
|
case TEST2: {
|
|
uint32_t *p = (uint32_t *)UVM32_EXTRAM_BASE;
|
|
printdec(p[32]); // word read
|
|
} break;
|
|
case TEST3: {
|
|
uint32_t *p = (uint32_t *)UVM32_EXTRAM_BASE;
|
|
p[32] = 1234; // past the end, out of bounds
|
|
} break;
|
|
case TEST4: {
|
|
uint32_t *p = (uint32_t *)UVM32_EXTRAM_BASE;
|
|
p[0] = 1234; // word write
|
|
yield(0);
|
|
} break;
|
|
case TEST5: {
|
|
uint8_t *p = (uint8_t *)UVM32_EXTRAM_BASE;
|
|
p[7] = 0xAB; // single byte write
|
|
yield(0);
|
|
} break;
|
|
case TEST6: {
|
|
uint8_t *p = (uint8_t *)UVM32_EXTRAM_BASE;
|
|
printdec(p[7]); // single byte read
|
|
} break;
|
|
case TEST7: {
|
|
uint16_t *p = (uint16_t *)UVM32_EXTRAM_BASE;
|
|
p[7] = 0xABCD; // short write
|
|
yield(0);
|
|
} break;
|
|
case TEST8: {
|
|
uint16_t *p = (uint16_t *)UVM32_EXTRAM_BASE;
|
|
printdec(p[7]); // short read
|
|
} break;
|
|
|
|
}
|
|
}
|
|
|