From cadb0f2e3e3b8cf06af5df4018ef306ca80b8119 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 17 Jan 2015 00:50:06 +0000 Subject: [PATCH] tgl6502/devrd: Remember to round the block offset off Otherwise end end up copying crap around. With this applied /init is loaded into memory correctly --- Kernel/platform-tgl6502/devrd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Kernel/platform-tgl6502/devrd.c b/Kernel/platform-tgl6502/devrd.c index 8766edef..da49b940 100644 --- a/Kernel/platform-tgl6502/devrd.c +++ b/Kernel/platform-tgl6502/devrd.c @@ -45,7 +45,7 @@ static int rd_transfer(bool is_read, uint8_t rawflag) while (ct < block_xfer) { /* Offset of block within an 8K bank (high byte) */ - romd_roff = (block << 9); + romd_roff = (block << 9) & 0x1FFF ; /* 8K block we need to select */ romd_rmap = 0x48 + (block >> 4); /* Map it over a page we are not copying into */ @@ -57,6 +57,8 @@ static int rd_transfer(bool is_read, uint8_t rawflag) romd_bank = 1; } irq = di(); +// kprintf("RD: map %d, roff %x bank %d dptr %x\n", +// romd_rmap, romd_roff, romd_bank, dptr); if (is_read) { rd_copyin(dptr); } -- 2.34.1