Subject: Re: Changing kernel base address (was: Re: Heads up: shared arm include files)
To: None <mpumford@black-star.demon.co.uk>
From: Robert Swindells <rjs@fdy2.demon.co.uk>
List: port-arm32
Date: 01/19/2001 00:09:34
>Right I have now done some tinkering and it turns out that moving VIDC/IOMD 
>and the podules is not that straightforward as tweaking a few #defines and 
>recompiling. The code in initarm assumes that these have been mapped by the 
>bootloader at f6000000. I have a partial work round for this but the kernels 
>crash after switching to the final page tables. On a more positive note it is 
>possible to move the VRAM (or video DRAM) without too much effort.

Looking at the code, the section below looks to be one culprit:

        id = ReadByte(IOMD_BASE + (IOMD_ID0 << 2))
          | (ReadByte(IOMD_BASE + (IOMD_ID1 << 2)) << 8);
        switch (id) {
        case ARM7500_IOC_ID:
#ifndef CPU_ARM7500
                panic("Encountered ARM7500 IOMD but no ARM7500 kernel support");
#endif  /* CPU_ARM7500 */
                break;
        case RPC600_IOMD_ID:
#ifdef CPU_ARM7500
                panic("Encountered ARM6/7 IOMD and ARM7500 kernel support");
#endif  /* CPU_ARM7500 */
                break;
        }

Why not delete it and add any extra checks needed to iomdattach().

The only other code that may cause problems is the call to consinit().

Robert