Port-playstation2 archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kloader in current
In article <20040319153729.GE6158%snark.ptc.spbu.ru@localhost>
uwe%ptc.spbu.ru@localhost wrote:
> I'd like to hear if kloader in current works/doesn't work for you. I
> remember a short period of time that it worked for me on hpcsh, but
> it's been dying with "TLB miss" for more than an year now.
I use kloader on my dreamcast and it still works fine.
I also use the attached patch since I thought -fstrict-aliasing
optimization introduced on gcc3 might cause problems,
but I have not confirmed yet if it really solves the problem.
---
Izumi Tsutsui
tsutsui%ceres.dti.ne.jp@localhost
Index: kloader.c
===================================================================
RCS file: /cvsroot/src/sys/arch/dreamcast/dreamcast/kloader.c,v
retrieving revision 1.2
diff -u -r1.2 kloader.c
--- kloader.c 15 Jul 2003 01:31:41 -0000 1.2
+++ kloader.c 19 Mar 2004 16:24:47 -0000
@@ -263,7 +263,7 @@
pg = TAILQ_PREV(kloader.cur_pg, pglist, pageq);
- ((struct kloader_page_tag *)PG_VADDR(pg))->next = 0;
+ ((struct kloader_page_tag *)(void *)PG_VADDR(pg))->next = 0;
}
void
@@ -340,7 +340,7 @@
void
kloader_boot(u_int32_t entry, struct kloader_page_tag *p)
{
- int tmp;
+ int tmp = 0; /* XXX: gcc */
/* Disable interrupt. block exception. */
__asm__ __volatile__(
@@ -352,12 +352,12 @@
SH4_TLB_DISABLE;
do {
- u_int32_t *dst =(u_int32_t *)p->dst;
- u_int32_t *src =(u_int32_t *)p->src;
+ u_int32_t *dst =(u_int32_t *)(void *)p->dst;
+ u_int32_t *src =(u_int32_t *)(void *)p->src;
u_int32_t sz = p->sz / sizeof (int);
while (sz--)
*dst++ = *src++;
- } while ((p = (struct kloader_page_tag *)p->next) != 0);
+ } while ((p = (struct kloader_page_tag *)(void *)p->next) != 0);
SH7750_CACHE_FLUSH();
@@ -387,7 +387,7 @@
}
op = p;
i++;
- } while ((p = (struct kloader_page_tag *)(p->next)) != 0);
+ } while ((p = (struct kloader_page_tag *)(void *)(p->next)) != 0);
DPRINTF("[%d(last)] next 0x%08x src 0x%08x dst 0x%08x sz 0x%x\n",
i - 1, op->next, op->src, op->dst, op->sz);
Home |
Main Index |
Thread Index |
Old Index