Re: Performa 475 and OpenBSD 4.0
Carl Bloomsburg <[email protected]> Wed, 27 Sep 2006 06:46:55 -0700
| Newsgroups | gmane.os.openbsd.mac68k |
|---|---|
| Message-ID | <[email protected]> |
The kernel using the diff you provided below is running great so far.
Carl
On Sep 26, 2006, at 11:26 AM, Miod Vallat wrote:
>> I am running 4.0 on a Performa 475. After updating my source code on
>> Sep 22 and rebuilding the kernel, the keyboard no longer worked.
>> After I backed out the changed made on 9/17/2006 to
>> src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the
>> keyboard
>> then worked again. Since I am not familiar with Mac hardware, I am
>> not sure if there is a configuration item that I might need to change
>> before using the new version of clock.c, so I thought I would ask
>> before submitting a bug report.
>
> Damned. My fumble, sorry. I have reverted the problematic part of the
> diff.
>
> Can you try the following diff on your LC475 (in addition to the
> clock.c
> revert you did), and report whether things still run ok?
>
> Thanks,
> Miod
>
> Index: include/viareg.h
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/include/viareg.h,v
> retrieving revision 1.18
> diff -u -p -r1.18 viareg.h
> --- include/viareg.h 2006/01/13 21:02:01 1.18
> +++ include/viareg.h 2006/09/26 18:20:42
> @@ -212,6 +212,7 @@ typedef SLIST_HEAD(, via2hand) via2hand_
>
> void via_init(void);
> void via_powerdown(void);
> +void via_set_aux_interrupts(void);
> void via_set_modem(int);
> void add_nubus_intr(int, int (*)(void *), void *, const char *);
> void enable_nubus_intr(void);
> Index: mac68k/machdep.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/machdep.c,v
> retrieving revision 1.134
> diff -u -p -r1.134 machdep.c
> --- mac68k/machdep.c 2006/09/22 22:15:19 1.134
> +++ mac68k/machdep.c 2006/09/26 18:20:43
> @@ -391,6 +391,7 @@ cpu_startup(void)
> */
> printf(version);
> identifycpu();
> + via_set_aux_interrupts();
>
> vers = mac68k_machine.booter_version;
> if (vers < CURRENTBOOTERVER) {
> @@ -1586,14 +1587,6 @@ setmachdep()
> mac68k_machine.scsi96 = 1;
> via_reg(VIA1, vIER) = 0x7f; /* disable VIA1 int */
> via_reg(VIA2, vIER) = 0x7f; /* disable VIA2 int */
> -
> - /* Enable A/UX interrupt scheme */
> - mac68k_machine.aux_interrupts = 1;
> - via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> - via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> - mac68k_machine.via1_ipl = 6;
> - mac68k_machine.via2_ipl = 2;
> -
> break;
> case MACH_CLASSAV:
> VIA2 = VIA2OFF;
> Index: mac68k/via.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/via.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 via.c
> --- mac68k/via.c 2006/06/30 15:12:47 1.28
> +++ mac68k/via.c 2006/09/26 18:20:44
> @@ -175,6 +175,28 @@ via_init()
> }
>
> /*
> + * Enable A/UX style interrupt scheme now if this model supports it.
> + */
> +void
> +via_set_aux_interrupts()
> +{
> + switch (current_mac_model->class) {
> + case MACH_CLASSQ:
> + case MACH_CLASSQ2:
> + mac68k_machine.aux_interrupts = 1;
> + via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> + via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> +
> + intr_disestablish(mac68k_machine.via1_ipl);
> + mac68k_machine.via1_ipl = 6;
> + intr_establish(via1_intr, NULL, mac68k_machine.via1_ipl, "via1");
> + /* mac68k_machine.via2_ipl = 2; unchanged */
> + intr_init();
> + break;
> + }
> +}
> +
> +/*
> * Set the state of the modem serial port's clock source.
> */
> void