Subject: Re: New bootloader for RiscPC+Kinetic available
To: Reinoud Zandijk <imago@kabel065011.kabel.utwente.nl>
From: Chris Gilbert <chris@paradox.demon.co.uk>
List: port-arm32
Date: 02/12/2001 22:31:00
On Monday 12 February 2001 10:26 pm, Reinoud Zandijk wrote:
> Well just thinking .... what did you do to get that high speed kernel? Was
> it also bugged with those crashes ? or did you change something else ? can
> you sedn me the patches so i can check them out and can try to think about
> a way?

Yes this is what I'm basing it on, your description of the kinetic support 
suggested you were doing something identical to me, just in a different 
place.  Without the following code it's as stable as a rock, suggesting 
something needs to use the SIMM ram.

The code is:
#ifdef KINETIC
	{
		/* 
		 * HACK HACK
		 * check the memory for kinetic memory
		 * if it isn't kinetic remove it from the bootconfig
		 */
		int x;
		for (x = 0; x < bootconfig.dramblocks; x++)
		{
			if (bootconfig.dram[x].address < 0x20000000)
			{
				int y;
				/* remove this block from the memory */
				bootconfig.drampages -= bootconfig.dram[x].pages;
				for (y=x; y < bootconfig.dramblocks; y++)
				{
					/* shuffle the memory down */
					if (y == (bootconfig.dramblocks-1))
					{
						bootconfig.dram[y].address = 0;
						bootconfig.dram[y].pages = 0;
					} else {
						bootconfig.dram[y] = bootconfig.dram[y+1];
					}
				}
				--bootconfig.dramblocks;
			}
		}
	}
#endif

This is just before the:
#if NHYDRABUS > 0
	/*
	 * If we have the hydra nick the first physical page for hydra booting
	 * Needs to be 2MB aligned
	 */
	for (logical = 0; logical < 0x400000; logical += NBPG) {
		map_entry(l2pagetable + 0x2000, logical,
		    bootconfig.dram[0].address + logical + NBPG);
	}


Chris