Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jun 2003 11:27:35 +0200
From:      Alan Robinson <alan.robinson@fujitsu-siemens.com>
To:        Marcel Moolenaar <marcel@xcllnt.net>
Cc:        freebsd-ia64@freebsd.org
Subject:   Re: DDB and SMP causes Unaligned Reference
Message-ID:  <20030610112735.A20041@fujitsu-siemens.com>
In-Reply-To: <20030610105306.A18863@fujitsu-siemens.com>; 10:53:06AM %2B0200
References:  <20030606183130.A19592@fujitsu-siemens.com> <20030606182015.GC569@dhcp01.pn.xcllnt.net> <20030610105306.A18863@fujitsu-siemens.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, Jun 10, 2003 at 10:53:06AM +0200, Alan Robinson wrote:
> On Fri, Jun 06, 2003 at 11:20:15AM -0700, Marcel Moolenaar wrote:
> > 
> > We don't set pc_pcb on ia64. The line above should read:
> > 	savectx(curthread->td_pcb);
> > 
> Tried it.
> > 
> > Try it and let me know if it works. I'll commit it then.
> > 
> Works.
> Works.
> (It still causes the strange double entry into DDB)
> 
> It would also be a good idea to remove the unneeded pc_pcb line with its
> incorrect comment from src/sys/ia64/include/pcpu.h
> 

I deleted the pc_pcb line from src/sys/ia64/include/pcpu.h and 
much to my surprise got a compile error in src/sys/ia64/ia64/machdep.c 
where the function cpu_pcpu_init does indeed set pc_pcb:

void
cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size)
{
        KASSERT(size >= sizeof(struct pcpu) + sizeof(struct pcb),
            ("%s: too small an allocation for pcpu", __func__));
        pcpu->pc_pcb = (void*)(pcpu+1);
}

so much for it not being set!. It is set, just the alignment of
struct pcb is wrong.

Is your suggested (and working) change 
> > 	savectx(curthread->td_pcb);
still correct ?

Alan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030610112735.A20041>