Changeset de7663f in mainline for boot


Ignore:
Timestamp:
2007-06-13T18:39:31Z (18 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.

Location:
boot/arch
Files:
11 edited

Legend:

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

    rc03ee1c rde7663f  
    6363 * @param bootinfo_size  Size of the bootinfo structure.
    6464 */
    65 extern void jump_to_kernel(void *entry, void *bootinfo, unsigned int bootinfo_size) __attribute__((noreturn));
     65extern void jump_to_kernel(void *entry, void *bootinfo,
     66    unsigned int bootinfo_size) __attribute__((noreturn));
    6667
    6768
    6869#endif
    6970
    70 
    7171/** @}
    7272 */
    73 
  • boot/arch/arm32/loader/main.h

    rc03ee1c rde7663f  
    6969
    7070
    71 
    7271extern void bootstrap(void);
    7372
  • boot/arch/arm32/loader/mm.c

    rc03ee1c rde7663f  
    4343 *  Will be readable/writable by kernel with no access from user mode.
    4444 *  Will belong to domain 0. No cache or buffering is enabled.
    45  *  
    46  *  @param pte    Section entry to initialize.
    47  *  @param frame  First frame in the section (frame number).
     45 *
     46 *  @param pte Section entry to initialize.
     47 *  @param frame First frame in the section (frame number).
    4848 *
    49  *  @note         If frame is not 1MB aligned, first lower 1MB aligned frame will be used.
    50  */   
    51 static void init_pte_level0_section(pte_level0_section_t* pte, unsigned int frame)
     49 *  @note If frame is not 1MB aligned, first lower 1MB aligned frame will be
     50 *      used.
     51 */
     52static void init_pte_level0_section(pte_level0_section_t* pte,
     53    unsigned int frame)
    5254{
    53         pte->descriptor_type   = PTE_DESCRIPTOR_SECTION;
    54         pte->bufferable        = 0;
    55         pte->cacheable         = 0;
    56         pte->impl_specific     = 0;
    57         pte->domain            = 0;
     55        pte->descriptor_type = PTE_DESCRIPTOR_SECTION;
     56        pte->bufferable = 0;
     57        pte->cacheable = 0;
     58        pte->impl_specific = 0;
     59        pte->domain = 0;
    5860        pte->should_be_zero_1  = 0;
    59         pte->access_permission = PTE_AP_USER_NO_KERNEL_RW;     
     61        pte->access_permission = PTE_AP_USER_NO_KERNEL_RW;
    6062        pte->should_be_zero_2  = 0;
    6163        pte->section_base_addr = frame;
    6264}
    63 
    6465
    6566/** Initializes page table used while booting the kernel. */
     
    6970        const unsigned int first_kernel_page = ADDR2PFN(PA2KA(0));
    7071
    71         // create 1:1 virtual-physical mapping (in lower 2GB)
     72        /* Create 1:1 virtual-physical mapping (in lower 2GB). */
    7273        for (i = 0; i < first_kernel_page; i++) {
    7374                init_pte_level0_section(&page_table[i], i);
    7475        }
    7576
    76         // create 1:1 virtual-physical mapping in kernel space (upper 2GB),
    77         // physical addresses start from 0
     77        /*
     78         * Create 1:1 virtual-physical mapping in kernel space (upper 2GB),
     79         * physical addresses start from 0.
     80         */
    7881        for (i = first_kernel_page; i < PTL0_ENTRIES; i++) {
    7982                init_pte_level0_section(&page_table[i], i - first_kernel_page);
    8083        }
    8184}
    82 
    8385
    8486/** Starts the MMU - initializes page table and enables paging. */
     
    8991}
    9092
    91 
    9293/** @}
    9394 */
    94  
     95
  • 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
  • boot/arch/arm32/loader/print/gxemul.c

    rc03ee1c rde7663f  
    4949static void putc(char ch)
    5050{
    51         *((volatile char *)PUTC_ADDRESS) = ch;
     51        *((volatile char *) PUTC_ADDRESS) = ch;
    5252}
    5353
  • boot/arch/arm32/loader/types.h

    rc03ee1c rde7663f  
    5858/** @}
    5959 */
    60 
  • boot/arch/mips32/loader/asm.h

    rc03ee1c rde7663f  
    2727 */
    2828
    29 #ifndef __ASM_H__
    30 #define __ASM_H__
     29#ifndef BOOT_mips32_ASM_H_
     30#define BOOT_mips32_ASM_H_
    3131
    3232#define PAGE_SIZE 16384
    3333#define PAGE_WIDTH 14
    3434
    35 #define memcpy(dst, src, cnt)  __builtin_memcpy((dst), (src), (cnt))
     35#define memcpy(dst, src, cnt)   __builtin_memcpy((dst), (src), (cnt))
    3636
    3737void jump_to_kernel(void *entry, void *bootinfo, unsigned int bootinfo_size) __attribute__((noreturn));
  • boot/arch/mips32/loader/main.h

    rc03ee1c rde7663f  
    2727 */
    2828
    29 #ifndef __MAIN_H__
    30 #define __MAIN_H__
     29#ifndef BOOT_mips32_MAIN_H_
     30#define BOOT_mips32_MAIN_H_
    3131
    3232/** Align to the nearest higher address.
  • boot/arch/mips32/loader/msim.h

    rc03ee1c rde7663f  
    2727 */
    2828
    29 #ifndef __MSIM_H__
    30 #define __MSIM_H__
     29#ifndef BOOT_mips32_MSIM_H_
     30#define BOOT_mips32_MSIM_H_
    3131
    3232extern void init(void);
  • boot/arch/mips32/loader/regname.h

    rc03ee1c rde7663f  
    2727 */
    2828
    29 #ifndef __mips32_REGNAME_H_
    30 #define __mips32_REGNAME_H_
     29#ifndef BOOT_mips32_REGNAME_H_
     30#define BOOT_mips32_REGNAME_H_
    3131
    3232#define zero    0
     
    8686#define eepc            30
    8787
    88 
    8988#endif /* _REGNAME_H_ */
  • boot/arch/mips32/loader/types.h

    rc03ee1c rde7663f  
    2727 */
    2828
    29 #ifndef TYPES_H__
    30 #define TYPES_H__
     29#ifndef BOOT_mips32_TYPES_H_
     30#define BOOT_mips32_TYPES_H_
    3131
    3232#include <gentypes.h>
Note: See TracChangeset for help on using the changeset viewer.