Port-atari archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: gcc4 problem on netbsd-4
On Wed, Dec 31, 2008 at 7:32 PM, Izumi Tsutsui
<tsutsui%ceres.dti.ne.jp@localhost> wrote:
> [start a new thread]
>
> I wrote in article <081229084450.M0108632%mirage.ceres.dti.ne.jp@localhost>:
>
>> Okay, then we have to fix gcc4 issue on netbsd-4 before tracking
>> wdc/dma issue on the HEAD. Maybe our sources might have some problem,
>> rather than gcc4.
>>
>> gcc4 is so aggressive on optimization and strictly requires C99
>> that variables lacking volatile or statements which are invalid
>> or undefined in C99 scope could be removed during optimization.
>>
>> The major changes between netbsd-4 and HEAD are:
>> (a) MI softintr(9) and yamt-splraiseipl merge
>> (b) MI todr(9) and timecounter(9)
>> (c) bus_space_handle_t type change (char * -> u_long)
>> (d) caddr_t purge
>>
>> I'll check sources around (a) and (b) again.
>
> I have not confirmed, but it looks atari/dev/clock.c:delay()
> in netbsd-4 may have a problem:
>
> ---
> /*
> * Calculate ((n * TIMER_FREQ) / 1e6) using explicit assembler code so
> * we can take advantage of the intermediate 64-bit quantity to prevent
> * loss of significance.
> */
> n -= 5;
> if(n < 0)
> return;
> {
> u_int temp;
>
> __asm volatile ("mulul %2,%1:%0" : "=d" (n), "=d" (temp)
> : "d" (TIMB_FREQ), "d" (n));
> __asm volatile ("divul %1,%2:%0" : "=d" (n)
> :
> "d"(1000000),"d"(temp),"0"(n));
> }
> ---
>
> In this code block, variable "temp" might be passed to
> __asm statements without initialization, so
> it could cause unexpected too long delays.
>
> We could just add "u_int temp = 0;" to initialize it,
> but in -current that code block has been replaced with
> (more human readable) C code.
>
> Could you try this one?
> http://www.ceres.dti.ne.jp/~tsutsui/netbsd/netbsd-ATARITT-4.0_STABLE-20081231.gz
> http://www.ceres.dti.ne.jp/~tsutsui/netbsd/netbsd-FALCON-4.0_STABLE-20081231.gz
Nice catch :) I tried FALCON kernel and now keyboard is probed without
delay and SCSI is probed properly (no freeze/delay).
Also reading NetBSD 4 installation sets from IDE disk and copying files
from IDE to SCSI work, so it seems that wdc_mb.c is not affected by gcc4.
-Tuomo
Home |
Main Index |
Thread Index |
Old Index