On Wed, Nov 29, 2000 at 02:47:54PM -0500, Andrew Gallatin wrote:
> Bernd Walter writes:
>  > 
>  >     trap entry = 0x2 (memory management fault)
>  >     a0         = 0xfffffbf1e0000018
>  >     a1         = 0x1
>  >     a2         = 0x0
>  >     pc         = 0xfffffc0000557a10
>  >     ra         = 0xfffffc000055791c
>  >     curproc    = 0xfffffc000062f118
>  >         pid = 0, comm = swapper
> Bernd,
> Note the faulting address.  It is not a k0seg address.  This means
> something went negative, most likely in the LCA_CFGOFF macro.  Here's
> why..  

What is k0seg?
How can I see that it's not one?

> After Doug's busspace changes, the *pcib_{read,write}_config()
> functions were introduced.  They take signed args and pass them to the
> CFGOFF macro.  Previously, the arguments to the LCA_CFGOFF macro were
> provided by the lca_cfg{read,write}{b,w,l} functions and were
> unsigned.

Just to be clear the values given to lca_read_config were:
b=0, s=20, f=0, reg=0, width=4
That means b in LCA_CFGOFF is false and the second formular will be applied.
The first part is 1<<n while n is calculated to be 31 in our case and
this makes -1 for int - your theory seems to be right.
But are you shure that changing our variables to unsigned will help?
Don't we need to make '1' unsigned?

> Can you try the following patch (after backing yours out).  A similar
> patch fixes the same problem on an AlphaServer 2100.  I'd like to fix
> this in all the pcib_{read,write}_config functions at once...

I will test it tommorow.

B.Walter              COSMO-Project         http://www.cosmo-project.de
[EMAIL PROTECTED]         Usergroup           [EMAIL PROTECTED]

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to