提交 6f84da3a 编写于 作者: P Peter Lieven 提交者: Paolo Bonzini

hw/scsi/lsi53c895a: add support for additional diag / debug registers

Some ancient Linux kernels read from registers 0x09 and 0x3c-3f during
boot. According to the spec these registers are for diag and debug
purposes only. If they are absend qemu aborts on read.
Signed-off-by: NPeter Lieven <pl@kamp.de>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 e1660dc5
...@@ -277,6 +277,7 @@ typedef struct { ...@@ -277,6 +277,7 @@ typedef struct {
uint32_t csbc; uint32_t csbc;
uint32_t scratch[18]; /* SCRATCHA-SCRATCHR */ uint32_t scratch[18]; /* SCRATCHA-SCRATCHR */
uint8_t sbr; uint8_t sbr;
uint32_t adder;
/* Script ram is stored as 32-bit words in host byteorder. */ /* Script ram is stored as 32-bit words in host byteorder. */
uint32_t script_ram[2048]; uint32_t script_ram[2048];
...@@ -1389,6 +1390,7 @@ again: ...@@ -1389,6 +1390,7 @@ again:
switch ((insn >> 27) & 7) { switch ((insn >> 27) & 7) {
case 0: /* Jump */ case 0: /* Jump */
DPRINTF("Jump to 0x%08x\n", addr); DPRINTF("Jump to 0x%08x\n", addr);
s->adder = addr;
s->dsp = addr; s->dsp = addr;
break; break;
case 1: /* Call */ case 1: /* Call */
...@@ -1513,6 +1515,8 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset) ...@@ -1513,6 +1515,8 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset)
return 0x7f; return 0x7f;
case 0x08: /* Revision ID */ case 0x08: /* Revision ID */
return 0x00; return 0x00;
case 0x09: /* SOCL */
return s->socl;
case 0xa: /* SSID */ case 0xa: /* SSID */
return s->ssid; return s->ssid;
case 0xb: /* SBCL */ case 0xb: /* SBCL */
...@@ -1577,6 +1581,8 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset) ...@@ -1577,6 +1581,8 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset)
return s->sbr; return s->sbr;
case 0x3b: /* DCNTL */ case 0x3b: /* DCNTL */
return s->dcntl; return s->dcntl;
/* ADDER Output (Debug of relative jump address) */
CASE_GET_REG32(adder, 0x3c)
case 0x40: /* SIEN0 */ case 0x40: /* SIEN0 */
return s->sien0; return s->sien0;
case 0x41: /* SIEN1 */ case 0x41: /* SIEN1 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册