aboutsummaryrefslogtreecommitdiff
path: root/triscv/src/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'triscv/src/mem.c')
-rw-r--r--triscv/src/mem.c13
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)