[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] mipsnet incorrect device ID fix
From: |
Vijay Kumar |
Subject: |
[Qemu-devel] [PATCH] mipsnet incorrect device ID fix |
Date: |
Fri, 22 Feb 2008 06:16:25 +0530 |
User-agent: |
Icedove 1.5.0.12 (X11/20070607) |
The mipsnet device returns wrong values for device ID, since it returns
the contents of the pointer rather that the contents of the device ID
string. Also the contents of the string is returned such that the order
is host endianess dependent. The patch fixes both these issues.
Signed-off-by: Vijay Kumar B. <address@hidden>
--- qemu-orig/hw/mipsnet.c 2007-12-27 11:18:52.000000000 +0530
+++ qemu-mod/hw/mipsnet.c 2008-02-20 20:23:44.000000000 +0530
@@ -101,6 +101,19 @@
mipsnet_update_irq(s);
}
+static uint32_t bytes_to_int32(const unsigned char *arr)
+{
+ int i;
+ uint32_t ret = 0;
+ int nbytes = sizeof(int32_t);
+
+ for (i = 0; i < nbytes; i++) {
+ ret = ret << 8 | arr[nbytes - 1 - i];
+ }
+
+ return ret;
+}
+
static uint32_t mipsnet_ioport_read(void *opaque, uint32_t addr)
{
MIPSnetState *s = opaque;
@@ -110,10 +123,10 @@
addr &= 0x3f;
switch (addr) {
case MIPSNET_DEV_ID:
- ret = *((uint32_t *)&devid);
+ ret = bytes_to_int32(devid);
break;
case MIPSNET_DEV_ID + 4:
- ret = *((uint32_t *)(&devid + 4));
+ ret = bytes_to_int32(devid + 4);
break;
case MIPSNET_BUSY:
ret = s->busy;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH] mipsnet incorrect device ID fix,
Vijay Kumar <=