[parisc-linux] arch/parisc/kernel/realmode_setup.c Question

Frank Rowand frank_rowand@hp.com
Mon, 15 Nov 1999 15:02:47 -0800


Ryan Bradetich wrote:
> 
> Paul,
> 
> I have started working on getting the kernel to boot on the PA2.0
> architecture again, and I see the you and others have been doing
> lots of work with the initialization code.  (Nice job to everyone btw,
> the code is a lot easier to figure out for a newbie like me! :)
> 
> I was looking at the following section of code and I have a
> discrepancy that I wanted to make you aware of.  I don't know how
> to fix it yet, but I will continue to look.
> 
> I am working on a C200+ which has the PA2.0 processor, so in the
> the following section of code it should give me an error during the
> BTLB initialization, but during the PDC_BTLB_INSERT pret is set
> to 0, so the check for non-PA1.1 architecture's fail.
> 
> I will continue to look through the documentation that has been
> previously pointed out, and the devresource page  pointed out by
> Frank Rowand to see if I can find a solution to the problem.
> 
> Thanks,
> 
> Ryan Bradetich
> 
> [Taken from arch/parisc/kernel/realmode_setup.c]
> 
>  /* This whole VM setup stuff may be removed ultimately.  It seems
>    * to me that once the TLB miss handlers are ready, we just switch
>    * to VM and let them handle TLB population -PB
>    */
> 
>   pret = (*PAGE0->mem_pdc)(
>   PDC_BLOCK_TLB,
>   PDC_BTLB_INSERT,
>   0x00000000,  /* MS bits, virt page number */
>   0xc0000,  /* LS bits, virt page number */
>   0x00000000,  /* Physical page number */
>   4096,   /* # pages to map */
>   0x03000000,  /* access rights, etc... */
>   0);   /* slot number */
> 
>   if (pret != 0)
>  {
>        mprintf("PDC_BTLB_INSERT returned %d\n", pret);
>       if (pret == -1)
>      {
>         mprintf("Looks like there's no BTLB on this box, so it's
> probably\n"
>                        "either PA1.0 or PA2.0.  In any case we're
> screwed for now\n");
>         led_flash();
>      }
> }


Ryan,


This might not solve your problem, but it's worth checking out.  The
procedure calling convention for PA 2.0 PDC is different than for 1.0.
See http://thepuffingroup.com/parisc/documentation.html, pdc.pdf,
p 2-8 defines the return status as a 64-bit, not 32 bit.  You might
also want to look at the neighboring pages of the document for other
changes (eg, arg4 through arg7 are passed in registers).

I don't know if your system has wide or narrow PDC - you have to call
PDC_MODEL(Return Capabilities), and check bit 63 of caps (the field
called OS64).

-Frank