static void order_dimms(void)
{
        unsigned long tom;

        tom = 0;
        for(;;) {

                unsigned csbase, csmask;
                unsigned size;
		unsigned index;
                csbase = 0;

                for(index = 0; index < 1; index++) {
			csbase = __builtin_inl(0x40);
                }
                if (csbase == 0) {
                        break;
                }


                size = csbase;

                csbase = (tom << 21);

                tom += size;


                csmask = size;
                csmask |= 0xfe00;


		__builtin_outl(csbase, 0xCFC);

		__builtin_outl(0xc260, 0xCF8);
		__builtin_outl(csmask, 0xCFC);
        }

	tom &=  ~0xff000000;

	__builtin_outl(tom, 0x1234);
}