Port-powerpc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Powerpc signal handler with floating point registers
Just tried -current (NetBSD 2.99.16). Still doesn't
seem to work.
Chris
--- chris zhang <sileizhang%yahoo.com@localhost> wrote:
> Hi,
> I'm using NetBSD 2.0-RC4 on a powerpc 603 processor
> which has the hardware floating point component
> enabled. I ran into a situation where it seems the
> powerpc floating point registers are not
> saved/restored properly by the signal handler.
>
> The following testing program has a floating
> computing
> loop inside "main" routine. It also sets up a
> SIGALRM
> handler to perform another floating point
> calculation
> periodically. When it runs, I got a lot of error
> message from the "fprintf" below, which means the
> signal handler probably interferes with the main
> program and does not restore the floating point
> registers when it returns.
>
> Any idea why this could happen? I tested on i386
> ports
> and didn't find the same problem, so I guess the
> problem is architecture specific.
>
> Thanks,
> Chris
>
> #include <stdio.h>
> #include <signal.h>
> #include <sys/time.h>
>
> int alarms;
>
> void testB_alrm_handler(int sig)
> {
> static double x = 1.2;
> x = x*x;
> alarms++;
> }
>
> int main(void)
> {
> register double new = 0;
> register double old = new;
> struct itimerval it;
>
> signal(SIGALRM, testB_alrm_handler);
>
> it.it_value.tv_sec = 0;
> it.it_value.tv_usec = 20000;
> it.it_interval = it.it_value;
> setitimer(ITIMER_REAL, &it, NULL);
>
> for (;;) {
> new = new + 1;
> if (new != old + 1)
> fprintf(stderr, "ERROR. alarms=%d %g != %g\n",
> alarms, new, old);
> old = new;
> }
> }
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Mail - You care about security. So do we.
> http://promotions.yahoo.com/new_mail
>
__________________________________
Do you Yahoo!?
Read only the mail you want - Yahoo! Mail SpamGuard.
http://promotions.yahoo.com/new_mail
Home |
Main Index |
Thread Index |
Old Index