Milo updates, Milo/Linux working on XL266

Ka'plaagh 19-Jan-1996 1012 +0000 (rusling@rdgeng.enet.dec.com)
Fri, 19 Jan 96 11:04:32 MET


All,
there are now new, updated Milo images on gatekeeper.
Here are the highlights:

(1) Timer fixes from Linus that fix floppy problems including
Milo going south when you type "ls fd" and there's no floppy
in the drive.

(2) EB164. Fully working Milos including flashable images as
well as ARC-loadable images. I'm working on a set of 1.3.57
relative patches to give to David Mosberger-Tang and to Linus.

(3) XL266 - (Avanti/Mustang). Hot off the presses, ARC loadable
Milo for these systems plus a working 1.3.57 kernel (including
David Mosberger-Tang's patches) in Miniloader/kernels/XL-1.3.57.gz.
This image allows Red Hat to be installed. I've included the changes
to irq.c at the end of this mail.

(4) Latest sources are in /src/milo-1.3.57-011896.tgz. These include
the PALcode etc required for EB164 and XL.

(5) AlphaPC64 images have the latest, faster NCR SCSI drivers in
them, making booting faster.

I have tried out all of the images (in /images/*) and they work
fine for me. I've also moved the old images into /archive. Let
me know if there are any problems.

Cheers Dave

--------------------------------------------------------------------------------
David A Rusling david.rusling@reo.mts.dec.com
Principal Engineer Digital Equipment Co. Limited
European Semiconductor P.O. BOX 121
Applications Engineering Imperial Way,
Worton Grange
Reading RG2 0TU
UK
UK-(0)1734-204380

------ changes to irq.c to allow XL to boot via ARC Milo ----------
------ Add the following elif line to do_entInt -------------------

#elif NR_IRQS == 16
isa_device_interrupt(vector, &regs) ;
#endif

>
> You need this because the Avanti PALcode (based on EB64+/Cabriolet)
> does not process the interrupts (like Noname does) and so the
> kernel has to.
>
----- and you get the following ------------------------------------

asmlinkage void do_entInt(unsigned long type, unsigned long vector, unsigned long la_ptr,
unsigned long a3, unsigned long a4, unsigned long a5,
struct pt_regs regs)
{
switch (type) {
case 0:
printk("Interprocessor interrupt? You must be kidding\n");
break;
case 1:
timer_interrupt(&regs);
return;
case 2:
machine_check(vector, la_ptr, &regs);
return;
case 3:
#if defined(CONFIG_ALPHA_JENSEN) || defined(CONFIG_ALPHA_NONAME) || \
defined(CONFIG_ALPHA_SRM)
srm_device_interrupt(vector, &regs);
#elif NR_IRQS == 33
cabriolet_and_eb66p_device_interrupt(vector, &regs);
#elif NR_IRQS == 32
eb66_and_eb64p_device_interrupt(vector, &regs);
#elif NR_IRQS == 16
isa_device_interrupt(vector, &regs) ;
#endif
return;
case 4:
printk("Performance counter interrupt\n");
break;;
default:
printk("Hardware intr %ld %lx? Huh?\n", type, vector);
}
printk("PC = %016lx PS=%04lx\n", regs.pc, regs.ps);
}