Re: Performa 475 and OpenBSD 4.0

Carl Bloomsburg <[email protected]> Thu, 5 Oct 2006 20:54:23 -0700
Newsgroups gmane.os.openbsd.mac68k
Message-ID <[email protected]>
Using the diff that you gave previously, and changing mac68k/clock.c to 
the most recent version that
is in CVS, I was able to compile the kernel, and then compile the 
OpenBSD 4.0 userland on the
Performa 475, with everything working the way I expect it to.  It took 
five days to compile
the userland code with /usr/src and /usr/obj on an NFS mount, since the 
hard disk I have is too small
otherwise.

Carl

On Sep 27, 2006, at 6:46 AM, Carl Bloomsburg wrote:

> 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