summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-05-21 21:10:30 -0600
committerAlejandro Soto <alejandro@34project.org>2024-05-24 05:58:42 -0600
commit582904f497496ac899cf8697b103372d84279b0a (patch)
tree24723234ead00bd61b41d598f0f8344884124bad /platform
parentda30643fa3f96c20b9a20c3daf638047ad71d6b2 (diff)
platform/wavelet3d: allow writes to "flash" over jtag
Diffstat (limited to 'platform')
-rw-r--r--platform/wavelet3d/main.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/platform/wavelet3d/main.cpp b/platform/wavelet3d/main.cpp
index 6e33e70..2771551 100644
--- a/platform/wavelet3d/main.cpp
+++ b/platform/wavelet3d/main.cpp
@@ -131,12 +131,13 @@ int main(int argc, char **argv)
top->dram_rid = ar.id;
top->dram_rlast = ar.len == 0;
+ top->dram_rresp = 0b00;
top->dram_rvalid = 1;
auto index = ar.addr >> 2;
if (index >= DRAM_SIZE) [[unlikely]] {
fprintf(stderr, "Bad DRAM read address: %08x\n", ar.addr);
- top->dram_rdata = 0;
+ top->dram_rresp = 0b11;
} else
top->dram_rdata = dram[index];
@@ -154,12 +155,16 @@ int main(int argc, char **argv)
auto &w = w_queue.front();
auto &aw = aw_queue.front();
+ top->dram_bresp = 0b00;
+
auto index = aw.addr >> 2;
- if (index >= DRAM_SIZE) [[unlikely]]
+ if (index >= DRAM_SIZE) [[unlikely]] {
fprintf(stderr, "Bad DRAM write address: %08x\n", aw.addr);
- else if (index < FLASH_BOUNDARY) [[unlikely]]
- fprintf(stderr, "Attempt to write to flash: %08x\n", aw.addr);
- else {
+ top->dram_bresp = 0b11;
+ } else {
+ if (index < FLASH_BOUNDARY) [[unlikely]]
+ fprintf(stderr, "Attempt to write to flash: %08x\n", aw.addr);
+
constexpr unsigned STRB_MASKS[16] = {
[0b0000] = 0x00000000,
[0b0001] = 0x000000ff,