Subject: Re: Shared libs
To: None <jonb@ons.octel.com>
From: Phil Nelson <phil@cs.wwu.edu>
List: port-pc532
Date: 01/19/1995 09:48:59
>Well, the 1.0 sources I have do NOT have SMALL_INV in locore.s anywhere.
>After looking at every ENTRY(*) in the file, I found trap_flg, but no
>#if's.  So I just did a 'tar zxvpf comp.tar.gz' to fix it. 8-(  I'll

OK, here is the _trap_flg version that appeared to fix my problems with
shared libs.  I do not have SMALL_INV defined and this will be cleaned up
soon.  It appears that the SMALL_INV code gets logical addresses and uses
them to invalidate physical addresses ... which is the wrong thing to do.
The else part just invalidates all the instruction cache instead of trying
to figure out which one is needed.  Matthias has been working on a
fix to this, but it is possible we will leave it with just invalidating the
entire cache as possible being the fastest solution.

After you get this fix in your 1.0 locore.s, try again to get shared libs
going.  

ENTRY(_trap_flg)
#if SMALL_INV   
        cinv    i, r0           /* Invalidate first line */
        addd    r1, r0
        cinv    i, r0           /* Invalidate possible second line */
#else
        sprd    cfg, r0         /* Trying something different! PAN */
        bicd    CFG_INS, r0
        lprd    cfg, r0
        ord     CFG_INS, r0
        lprd    cfg, r0
#endif  
        addqd   1, tos          /* Increment return address */
        rett    0



--Phil