Changeset 43d6401 in mainline for kernel/arch/ppc32/include


Ignore:
Timestamp:
2009-01-29T18:24:40Z (17 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
917c427
Parents:
f817d3a
Message:

ppc32: add support for cache disable page access control

Location:
kernel/arch/ppc32/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/include/mm/page.h

    rf817d3a r43d6401  
    121121/* Macros for querying the last-level PTEs. */
    122122#define PTE_VALID_ARCH(pte)                     (*((uint32_t *) (pte)) != 0)
    123 #define PTE_PRESENT_ARCH(pte)                   ((pte)->p != 0)
     123#define PTE_PRESENT_ARCH(pte)                   ((pte)->present != 0)
    124124#define PTE_GET_FRAME_ARCH(pte)                 ((pte)->pfn << 12)
    125125#define PTE_WRITABLE_ARCH(pte)                  1
     
    135135        pte_t *p = &pt[i];
    136136       
    137         return ((1 << PAGE_CACHEABLE_SHIFT) |
    138             ((!p->p) << PAGE_PRESENT_SHIFT) |
     137        return (((!p->page_cache_disable) << PAGE_CACHEABLE_SHIFT) |
     138            ((!p->present) << PAGE_PRESENT_SHIFT) |
    139139            (1 << PAGE_USER_SHIFT) |
    140140            (1 << PAGE_READ_SHIFT) |
    141141            (1 << PAGE_WRITE_SHIFT) |
    142142            (1 << PAGE_EXEC_SHIFT) |
    143             (p->g << PAGE_GLOBAL_SHIFT));
     143            (p->global << PAGE_GLOBAL_SHIFT));
    144144}
    145145
     
    148148        pte_t *p = &pt[i];
    149149       
    150         p->p = !(flags & PAGE_NOT_PRESENT);
    151         p->g = (flags & PAGE_GLOBAL) != 0;
     150        p->page_cache_disable = !(flags & PAGE_CACHEABLE);
     151        p->present = !(flags & PAGE_NOT_PRESENT);
     152        p->global = (flags & PAGE_GLOBAL) != 0;
    152153        p->valid = 1;
    153154}
  • kernel/arch/ppc32/include/mm/tlb.h

    rf817d3a r43d6401  
    4040#include <typedefs.h>
    4141
     42#define WIMG_GUARDED    0x01
     43#define WIMG_COHERENT   0x02
     44#define WIMG_NO_CACHE   0x04
     45#define WIMG_WRITETHRU  0x08
     46
    4247typedef struct {
    4348        unsigned v : 1;          /**< Valid */
  • kernel/arch/ppc32/include/types.h

    rf817d3a r43d6401  
    8585/** Page Table Entry. */
    8686typedef struct {
    87         unsigned p : 1;       /**< Present bit. */
    88         unsigned a : 1;       /**< Accessed bit. */
    89         unsigned g : 1;       /**< Global bit. */
    90         unsigned valid : 1;   /**< Valid content even if not present. */
    91         unsigned pfn : 20;    /**< Physical frame number. */
     87        unsigned present : 1;             /**< Present bit. */
     88        unsigned page_write_through : 1;  /**< Write thought caching. */
     89        unsigned page_cache_disable : 1;  /**< No caching. */
     90        unsigned accessed : 1;            /**< Accessed bit. */
     91        unsigned global : 1;              /**< Global bit. */
     92        unsigned valid : 1;               /**< Valid content even if not present. */
     93        unsigned pfn : 20;                /**< Physical frame number. */
    9294} pte_t;
    9395
Note: See TracChangeset for help on using the changeset viewer.