Re: gcc4 problem on netbsd-4

"David Ross" <[email protected]>
Newsgroups gmane.os.netbsd.ports.atari
Message-ID <[email protected]>
On the TT030, it boots but after loading sysinst I get a looping printout 
of:
erase ^H, werase ^W, kill ^V, intr ^C
mount: /: Bad system call
erase ^H, werase ^W, kill ^V, intr ^C
mount: /: Bad system call
..

I think probably the issue is that I need to switch from using the HEAD 
sysinst to the netbsd-4 sysinst.  I'll try this later.

The filesize on this kernel is different from the others -- is this one gcc4 
whereas the others were gcc3?  I thought HEAD was already gcc4 (?)

David Ross
[email protected]

----- Original Message ----- 
From: "T. Makinen" <[email protected]>
To: "Izumi Tsutsui" <[email protected]>
Cc: <[email protected]>
Sent: Wednesday, December 31, 2008 1:08 PM
Subject: Re: gcc4 problem on netbsd-4


> On Wed, Dec 31, 2008 at 7:32 PM, Izumi Tsutsui <[email protected]> 
> wrote:
>> [start a new thread]
>>
>> I wrote in article <[email protected]>:
>>
>>> 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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.