diff options
Diffstat (limited to 'triscv/src/mem.c')
| -rw-r--r-- | triscv/src/mem.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/triscv/src/mem.c b/triscv/src/mem.c index 84bd71f..1bcecfc 100644 --- a/triscv/src/mem.c +++ b/triscv/src/mem.c @@ -26,17 +26,18 @@ void mem_init(struct mem *mem, const void *buf, size_t len) static void mem_write1(struct cpu *cpu, struct mem *mem, pm_t addr, tri_t t) { (void)cpu; - (void)mem; - (void)addr; - (void)t; + mem->buf[addr] = tri_mask(t, 9); } static void mem_write3(struct cpu *cpu, struct mem *mem, pm_t addr, tri_t t) { (void)cpu; - (void)mem; - (void)addr; - (void)t; + tri_t t0 = tri_mask(t, 9); + tri_t t1 = tri_mask(tri_sr(t, 9), 9); + tri_t t2 = tri_mask(tri_sr(t, 18), 9); + mem_write1(cpu, mem, addr + 0, t0); + mem_write1(cpu, mem, addr + 1, t1); + mem_write1(cpu, mem, addr + 2, t2); } static tri_t mem_read1(struct cpu *cpu, struct mem *mem, pm_t addr) |
