Changeset de7663f in mainline for boot/arch/arm32/loader/mm.h


Ignore:
Timestamp:
2007-06-13T18:39:31Z (17 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
341140c
Parents:
c03ee1c
Message:

Remove some forgotten \r from arm32 files.
Formatting changes.
Add some correct BOOT_mips32_* guards.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/arm32/loader/mm.h

    rc03ee1c rde7663f  
    11/*
    2  * Copyright (c) 2007 Pavel Jancik, Michal Kebrt
     2 * Copyright (c) 2007 Pavel Jancik
     3 * Copyright (c) 2007 Michal Kebrt
    34 * All rights reserved.
    45 *
     
    3435 *  @brief Memory management used while booting the kernel.
    3536 *
    36  *  So called "section" paging is used while booting the kernel. The term "section"
    37  *  comes from the ARM architecture specification and stands for the following:
    38  *  one-level paging, 1MB sized pages, 4096 entries in the page table.
     37 *  So called "section" paging is used while booting the kernel. The term
     38 *  "section" comes from the ARM architecture specification and stands for the
     39 *  following: one-level paging, 1MB sized pages, 4096 entries in the page
     40 *  table.
    3941 */
    4042
     
    5052
    5153/** Frame width. */
    52 #define FRAME_WIDTH                 20
     54#define FRAME_WIDTH                     20
    5355
    5456/** Frame size. */
    55 #define FRAME_SIZE                  (1 << FRAME_WIDTH)
     57#define FRAME_SIZE                      (1 << FRAME_WIDTH)
    5658
    57 /** Page size in 2-level paging which is switched on later after the kernel initialization. */
    58 #define KERNEL_PAGE_SIZE            (1 << 12)
     59/** Page size in 2-level paging which is switched on later after the kernel
     60 * initialization.
     61 */
     62#define KERNEL_PAGE_SIZE                (1 << 12)
    5963
    6064
    6165#ifndef __ASM__
    6266/** Converts kernel address to physical address. */
    63 #       define KA2PA(x)                 (((uintptr_t) (x)) - 0x80000000)
     67#       define KA2PA(x)                 (((uintptr_t) (x)) - 0x80000000)
    6468/** Converts physical address to kernel address. */
    65 #       define PA2KA(x)                 (((uintptr_t) (x)) + 0x80000000)
     69#       define PA2KA(x)                 (((uintptr_t) (x)) + 0x80000000)
    6670#else
    67 #       define KA2PA(x)                 ((x) - 0x80000000)
    68 #       define PA2KA(x)                 ((x) + 0x80000000)
     71#       define KA2PA(x)                 ((x) - 0x80000000)
     72#       define PA2KA(x)                 ((x) + 0x80000000)
    6973#endif
    7074
    7175
    7276/** Number of entries in PTL0. */
    73 #define PTL0_ENTRIES                (1<<12)                             /* 4096 */
     77#define PTL0_ENTRIES                    (1 << 12)       /* 4096 */
    7478
    7579/** Size of an entry in PTL0. */
    76 #define PTL0_ENTRY_SIZE             4
     80#define PTL0_ENTRY_SIZE                 4
    7781
    7882/** Returns number of frame the address belongs to. */
    79 #define ADDR2PFN( addr )            ( ((uintptr_t)(addr)) >> FRAME_WIDTH )
     83#define ADDR2PFN(addr)                  (((uintptr_t) (addr)) >> FRAME_WIDTH)
    8084
    8185/** Describes "section" page table entry (one-level paging with 1MB sized pages). */ 
    82 #define PTE_DESCRIPTOR_SECTION      0x2
     86#define PTE_DESCRIPTOR_SECTION          0x2
    8387
    8488/** Page table access rights: user - no access, kernel - read/write. */
    85 #define PTE_AP_USER_NO_KERNEL_RW    0x1
     89#define PTE_AP_USER_NO_KERNEL_RW        0x1
    8690
    8791
     
    8993
    9094
    91 /** Page table level 0 entry - "section" format is used (one-level paging, 1MB sized
    92  * pages). Used only while booting the kernel.
     95/** Page table level 0 entry - "section" format is used (one-level paging, 1MB
     96 * sized pages). Used only while booting the kernel.
    9397 */
    9498typedef struct {
    95         unsigned descriptor_type     : 2;
    96         unsigned bufferable          : 1;
    97         unsigned cacheable           : 1;
    98         unsigned impl_specific       : 1;
    99         unsigned domain              : 4;
    100         unsigned should_be_zero_1    : 1;
    101         unsigned access_permission   : 2;       
    102         unsigned should_be_zero_2    : 8;
    103         unsigned section_base_addr   : 12;
     99        unsigned descriptor_type : 2;
     100        unsigned bufferable : 1;
     101        unsigned cacheable : 1;
     102        unsigned impl_specific : 1;
     103        unsigned domain : 4;
     104        unsigned should_be_zero_1 : 1;
     105        unsigned access_permission : 2;         
     106        unsigned should_be_zero_2 : 8;
     107        unsigned section_base_addr : 12;
    104108} __attribute__ ((packed)) pte_level0_section_t;
    105109
    106110
    107 /** Page table that holds 1:1 virtual to physical mapping used while booting the kernel. */
     111/** Page table that holds 1:1 virtual to physical mapping used while booting the
     112 * kernel.
     113 */
    108114extern pte_level0_section_t page_table[PTL0_ENTRIES];
    109115
     
    118124         */
    119125        asm volatile (
    120                 // behave as a client of domains
    121                 "ldr r0, =0x55555555       \n"
    122                 "mcr p15, 0, r0, c3, c0, 0 \n"
     126                /* behave as a client of domains */
     127                "ldr r0, =0x55555555\n"
     128                "mcr p15, 0, r0, c3, c0, 0\n"
    123129
    124                 // current settings
    125                 "mrc p15, 0, r0, c1, c0, 0 \n"
     130                /* current settings */
     131                "mrc p15, 0, r0, c1, c0, 0\n"
    126132
    127                 // mask to enable paging
    128                 "ldr r1, =0x00000001       \n"
    129                 "orr r0, r0, r1            \n"
     133                /* mask to enable paging */
     134                "ldr r1, =0x00000001\n"
     135                "orr r0, r0, r1\n"
    130136
    131                 // store settings
    132                 "mcr p15, 0, r0, c1, c0, 0 \n"
     137                /* store settings */
     138                "mcr p15, 0, r0, c1, c0, 0\n"
    133139                :
    134140                :
     
    144150static inline void set_ptl0_address(pte_level0_section_t* pt)
    145151{
    146     asm volatile (
    147                 "mcr p15, 0, %0, c2, c0, 0 \n"
     152        asm volatile (
     153                "mcr p15, 0, %0, c2, c0, 0\n"
    148154                :
    149                 : "r"(pt)
    150     );
     155                : "r" (pt)
     156        );
    151157}
    152158
Note: See TracChangeset for help on using the changeset viewer.