OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [Documentation/] [arm/] [MEMC] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
MEMC enhancements for Linux 2.3
2
-------------------------------
3
 
4
The current interface:
5
 
6
  There is a cache of the MEMC settings held in tsk->tss.memcmap, which is
7
  kept up to date by the following functions (from the page tables):
8
 
9
  update_memc_all()                             hits:   2
10
        Updates all MEMC caches on all processes.  Update the real MEMC
11
        to reflect the `current' tasks page tables.
12
 
13
  update_memc_tsk(tsk)                          hits:   0
14
        Update the MEMC cache for the specified task.  If tsk is the
15
        `current' task, then update the real MEMC as well.
16
 
17
  update_memc_mm(mm)                            hits:   16
18
        Update the MEMC cache for any task which has a mm_struct
19
        corresponding to `mm'.  If the `current' tasks mm_struct
20
        includes this, then update the real MEMC as well.
21
 
22
  update_memc_addr(mm, addr, pte)               hits:   8
23
        Update the MEMC cache entry defined by the physical address
24
        in pte for any task which has a mm_struct corresponding to `mm'.
25
        If the `current' tasks mm_struct includes this, then update the
26
        real MEMC as well.
27
 
28
The proposed interface:
29
 
30
  Couple the MEMC cache into the mm_struct so that we only have to
31
  keep one copy per mm_struct.  This also allows us to reduce the
32
  number of loops through all existing tasks on each MEMC change.
33
 
34
  memc_clear(mm, physaddr)                      hits:   6
35
        Clear the MEMC mapping associated with the physical address
36
        `physaddr'.  If the `current' tasks mm_struct is `mm', then
37
        update the real MEMC as well.   (should equate to a possible
38
        two writes and zero reads).
39
 
40
  memc_update_addr(mm, pte, logaddr)            hits:   10
41
        Change the MEMC mapping for the physical address specified
42
        in `pte' to point to the logical address `logaddr', with the
43
        protection specified in `pte'.  If the `current' tasks mm_struct
44
        is `mm', then update the real MEMC as well.  (should again equate
45
        to a possible two writes and zero reads).
46
 
47
  memc_update_mm(mm)                            hits:   7
48
        Rebuild the MEMC mappings for the specified `mm' in the same way
49
        that update_memc_mm used to.  If the `current' tasks mm_struct
50
        is `mm', update the real MEMC as well.
51
 
52
  memc_update_all()                             hits:   2
53
        Rebuild the MEMC mappings for all mm_structs, including the real
54
        MEMC.
55
 
56
The hit numbers are approximate usage of each function in the 2.2.7
57
memory management (mm) code, and there are other uses outside this area.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.