linux-mips-fnet
[Top] [All Lists]

TLB Management , C library

To: linux-mips@fnet.fr
Subject: TLB Management , C library
From: Didier Frick <dfrick@dial.eunet.ch>
Date: Wed, 5 Jun 1996 07:08:12 +0200
Hello,
I'm currently investigating the linux-mips port and I have come
across some trouble:
1) I have begun to work on the  R3000 adaptation. I'm having lots
of trouble with virtual memory mapping, because the format of the
MMU register is different than for the R4000 and I dont understand 
very well  the way page tables are mapped in kernel state.
My current state is that the boot process hangs in buffer_init, which
is the first routine to use VM in kernel mode.

If I trace the execution, I see that buffer_init causes a tlbs exception,
when it first writes into vmalloced memory.
This exception then causes a tlbl, because the page table isn't in the TLB.
The tlbl handler faults in its turn for the same reason and the system hangs.
I'd greatly appreciate some information about the way TLBMAP, TLB_ROOT and
the like are working, and about how kernel page tables are implemented.
(I couldn't find any routing setting up a kernel page table, like on other
architectures).

2)
We have had a lot of trouble trying to compile the linux c library from
the fnet server, even after the patches. We were using the 
mips-linuxelf-gcc , also from fnet. The makefiles keep calling the
 wrong tools, some files seem to be missing, etc... 
Do you have any hints on how to fix the situation ?

Finally, maybe you will be interested in some information we have gathered
during our first 10 days of work:

- The method used to discriminate between MIPS ISA levels using
  the preprocessor is buggy. if you write:

#if __MIPS_ISA_LEVEL == __MIPS_ISA_LEVEL2

        a

#else
        b

#endif

  The test will always succeed if __MIPS__ISA_LEVEL2 is not defined to
some value. We've had to modify the gcc specs file to define arbitrary
numeric values for the mips isa symbols.

- There was a bug in the 1.3.98 ld.script: the _end symbol is before
  the .sbss data, which will cause variables to be overwritten at 
  initialization.

- The R3000 cli/sti functions need nops to prevent coprocessor
  hazards.


Thanks in advance for any input, 

        
                                        Didier

<Prev in Thread] Current Thread [Next in Thread>