Port-amiga archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] Fixup for Amigas with memory at 0x200000



Hi,

On Fri, Jan 10, 2003 at 09:58:05PM +0200, Ilpo Ruotsalainen wrote:
> On Fri Jan 10 2003 at 21:38:59 +0200, Ilpo Ruotsalainen wrote:
> > On Fri Jan 10 2003 at 21:35:53 +0200, Ilpo Ruotsalainen wrote:
> > > After some debugging I've managed to narrow it down to this:
> > > 
> > > LMMUenable_start:
> > > 
> > > /* enable the MMU */
> > > #if defined(M68040) || defined(M68060)
> > >         RELOC(mmutype, %a0)
> > >         cmpl    #MMU_68040,%a0@
> > >         jne     Lenable030
> > >         movl    #0xdff180,%a0
> > >         movw    #0xa00,%a0@
> > >         pflusha
> > >         movl    #0xdff180,%a0
> > >         movw    #0x00a,%a0@
> > >         movl    #0xc000,%d0
> > >         .word   0x4e7b, 0x0003          | movec %d0,%tc
> > >         jmp     Lunshadow:l
> > > #endif /* M68040 || M68060 */
> > > /* ENABLE, SRP_ENABLE, 8K pages, 8bit A-level, 11bit B-level */
> > > Ltc:    .long   0x82d08b00
> > > Lenable030:
> > >         movl    #0xdff180,%a0
> > >         movw    #0x0a0,%a0@
> > >         lea     Ltc,%a0
> > >         pmove   %a0@,%tc
> > >         jmp     Lunshadow:l
> > > 
> > > LMMUenable_end:
> > > 
> > > With the code looking like this, I end up with RED screen. Which seems
> > > to say it dies on the "pflusha" instruction (unless that instruction
> > > changes MMU mappings or such? I'd think it's the movec that changes them
> > > but I don't know really almost anything about 68k MMUs...).
> > 
> > Hmpf, sent this a few minutes too early. Next iteration with the
> > "pflusha" instruction removed produced a kernel that booted
> > successfully. So that seems to be the guilty one, I'm not m68k guru
> > enough to instantly know why it would die on that...
> 
> (I seem to have a bad habit of replying to myself a lot :P)
> 
> The problem is that locore.s is compiled as 030 code. 030 and 040/060
> have different opcodes for pflusha, so the wrong 030 opcode is emitted
> which causes 060 to crash and burn. Replacing the pflusha with .word
> 0xf518 (which is the 040 version of pflusha) generated a booting kernel.

So, Aymeric: if you replace the pflusha in the 040/60 section with 
.word 0xf518, or use the slightly reordered patch I'll send to you 
in a few minutes, you may commit this IMO (and request pullup).

(That is: the DraCo version works, too, with this change.).

Regards,
        Ignatios

-- 
seal your e-mail: http://www.gnupg.org/

Attachment: pgpSErrB0hBWn.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index