Changeset 5bda2f3e in mainline for kernel/arch/ia64/include/mm


Ignore:
Timestamp:
2009-09-04T18:06:24Z (16 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
93d66ef
Parents:
029d94a
Message:

ia64 cleanup and conding style
(no change in functionality)

Location:
kernel/arch/ia64/include/mm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia64/include/mm/as.h

    r029d94a r5bda2f3e  
    2727 */
    2828
    29 /** @addtogroup ia64mm 
     29/** @addtogroup ia64mm
    3030 * @{
    3131 */
     
    3636#define KERN_ia64_AS_H_
    3737
    38 #define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH      0
     38#define KERNEL_ADDRESS_SPACE_SHADOWED_ARCH  0
    3939
    40 #define KERNEL_ADDRESS_SPACE_START_ARCH         (unsigned long) 0xe000000000000000ULL
    41 #define KERNEL_ADDRESS_SPACE_END_ARCH           (unsigned long) 0xffffffffffffffffULL
    42 #define USER_ADDRESS_SPACE_START_ARCH           (unsigned long) 0x0000000000000000ULL
    43 #define USER_ADDRESS_SPACE_END_ARCH             (unsigned long) 0xdfffffffffffffffULL
     40#define KERNEL_ADDRESS_SPACE_START_ARCH  ((unsigned long) 0xe000000000000000ULL)
     41#define KERNEL_ADDRESS_SPACE_END_ARCH    ((unsigned long) 0xffffffffffffffffULL)
     42#define USER_ADDRESS_SPACE_START_ARCH    ((unsigned long) 0x0000000000000000ULL)
     43#define USER_ADDRESS_SPACE_END_ARCH      ((unsigned long) 0xdfffffffffffffffULL)
    4444
    45 #define USTACK_ADDRESS_ARCH     0x0000000ff0000000ULL
     45#define USTACK_ADDRESS_ARCH  0x0000000ff0000000ULL
    4646
    4747typedef struct {
     
    5050#include <genarch/mm/as_ht.h>
    5151
    52 #define as_constructor_arch(as, flags)          (as != as)
    53 #define as_destructor_arch(as)                  (as != as)
    54 #define as_create_arch(as, flags)               (as != as)
     52#define as_constructor_arch(as, flags)  (as != as)
     53#define as_destructor_arch(as)          (as != as)
     54#define as_create_arch(as, flags)       (as != as)
    5555#define as_deinstall_arch(as)
    5656#define as_invalidate_translation_cache(as, page, cnt)
  • kernel/arch/ia64/include/mm/page.h

    r029d94a r5bda2f3e  
    2828 */
    2929
    30 /** @addtogroup ia64mm 
     30/** @addtogroup ia64mm
    3131 * @{
    3232 */
     
    3939#include <arch/mm/frame.h>
    4040
    41 #define PAGE_SIZE       FRAME_SIZE
    42 #define PAGE_WIDTH      FRAME_WIDTH
     41#define PAGE_SIZE   FRAME_SIZE
     42#define PAGE_WIDTH  FRAME_WIDTH
    4343
    4444#ifdef KERNEL
    4545
    4646/** Bit width of the TLB-locked portion of kernel address space. */
    47 #define KERNEL_PAGE_WIDTH               28      /* 256M */
    48 #define IO_PAGE_WIDTH                   26      /* 64M */
    49 #define FW_PAGE_WIDTH                   28      /* 256M */
    50 
    51 #define USPACE_IO_PAGE_WIDTH            12      /* 4K */
     47#define KERNEL_PAGE_WIDTH  28  /* 256M */
     48#define IO_PAGE_WIDTH      26  /* 64M */
     49#define FW_PAGE_WIDTH      28  /* 256M */
     50
     51#define USPACE_IO_PAGE_WIDTH  12  /* 4K */
    5252
    5353
     
    5959
    6060/* Firmware area (bellow 4GB in phys mem) */
    61 #define FW_OFFSET             0x00000000F0000000
     61#define FW_OFFSET   0x00000000F0000000
    6262/* Legacy IO space */
    63 #define IO_OFFSET             0x0001000000000000
     63#define IO_OFFSET   0x0001000000000000
    6464/* Videoram - now mapped to 0 as VGA text mode vram on 0xb8000 */
    65 #define VIO_OFFSET            0x0002000000000000
    66 
    67 
    68 #define PPN_SHIFT                       12
    69 
    70 #define VRN_SHIFT                       61
    71 #define VRN_MASK                        (7LL << VRN_SHIFT)
    72 #define VA2VRN(va)                      ((va)>>VRN_SHIFT)
     65#define VIO_OFFSET  0x0002000000000000
     66
     67
     68#define PPN_SHIFT  12
     69
     70#define VRN_SHIFT   61
     71#define VRN_MASK    (7ULL << VRN_SHIFT)
     72#define VA2VRN(va)  ((va) >> VRN_SHIFT)
    7373
    7474#ifdef __ASM__
    75 #define VRN_KERNEL                      7
     75        #define VRN_KERNEL  7
    7676#else
    77 #define VRN_KERNEL                      7LL
     77        #define VRN_KERNEL  7ULL
    7878#endif
    7979
    80 #define REGION_REGISTERS                8
    81 
    82 #define KA2PA(x)        ((uintptr_t) (x - (VRN_KERNEL << VRN_SHIFT)))
    83 #define PA2KA(x)        ((uintptr_t) (x + (VRN_KERNEL << VRN_SHIFT)))
    84 
    85 #define VHPT_WIDTH                      20      /* 1M */
    86 #define VHPT_SIZE                       (1 << VHPT_WIDTH)
    87 
    88 #define PTA_BASE_SHIFT                  15
     80#define REGION_REGISTERS  8
     81
     82#define KA2PA(x)  ((uintptr_t) ((x) - (VRN_KERNEL << VRN_SHIFT)))
     83#define PA2KA(x)  ((uintptr_t) ((x) + (VRN_KERNEL << VRN_SHIFT)))
     84
     85#define VHPT_WIDTH  20  /* 1M */
     86#define VHPT_SIZE   (1 << VHPT_WIDTH)
     87
     88#define PTA_BASE_SHIFT  15
    8989
    9090/** Memory Attributes. */
    91 #define MA_WRITEBACK    0x0
    92 #define MA_UNCACHEABLE  0x4
     91#define MA_WRITEBACK    0x00
     92#define MA_UNCACHEABLE  0x04
    9393
    9494/** Privilege Levels. Only the most and the least privileged ones are ever used. */
    95 #define PL_KERNEL       0x0
    96 #define PL_USER         0x3
     95#define PL_KERNEL  0x00
     96#define PL_USER    0x03
    9797
    9898/* Access Rigths. Only certain combinations are used by the kernel. */
    99 #define AR_READ         0x0
    100 #define AR_EXECUTE      0x1
    101 #define AR_WRITE        0x2
     99#define AR_READ     0x00
     100#define AR_EXECUTE  0x01
     101#define AR_WRITE    0x02
    102102
    103103#ifndef __ASM__
     
    113113struct vhpt_tag_info {
    114114        unsigned long long tag : 63;
    115         unsigned ti : 1;
     115        unsigned int ti : 1;
    116116} __attribute__ ((packed));
    117117
     
    123123struct vhpt_entry_present {
    124124        /* Word 0 */
    125         unsigned p : 1;
    126         unsigned : 1;
    127         unsigned ma : 3;
    128         unsigned a : 1;
    129         unsigned d : 1;
    130         unsigned pl : 2;
    131         unsigned ar : 3;
     125        unsigned int p : 1;
     126        unsigned int : 1;
     127        unsigned int ma : 3;
     128        unsigned int a : 1;
     129        unsigned int d : 1;
     130        unsigned int pl : 2;
     131        unsigned int ar : 3;
    132132        unsigned long long ppn : 38;
    133         unsigned : 2;
    134         unsigned ed : 1;
    135         unsigned ig1 : 11;
     133        unsigned int : 2;
     134        unsigned int ed : 1;
     135        unsigned int ig1 : 11;
    136136       
    137137        /* Word 1 */
    138         unsigned : 2;
    139         unsigned ps : 6;
    140         unsigned key : 24;
    141         unsigned : 32;
     138        unsigned int : 2;
     139        unsigned int ps : 6;
     140        unsigned int key : 24;
     141        unsigned int : 32;
    142142       
    143143        /* Word 2 */
    144144        union vhpt_tag tag;
    145145       
    146         /* Word 3 */                                                                                                   
     146        /* Word 3 */
    147147        uint64_t ig3 : 64;
    148148} __attribute__ ((packed));
     
    150150struct vhpt_entry_not_present {
    151151        /* Word 0 */
    152         unsigned p : 1;
     152        unsigned int p : 1;
    153153        unsigned long long ig0 : 52;
    154         unsigned ig1 : 11;
     154        unsigned int ig1 : 11;
    155155       
    156156        /* Word 1 */
    157         unsigned : 2;
    158         unsigned ps : 6;
     157        unsigned int : 2;
     158        unsigned int ps : 6;
    159159        unsigned long long ig2 : 56;
    160 
     160       
    161161        /* Word 2 */
    162162        union vhpt_tag tag;
    163163       
    164         /* Word 3 */                                                                                                   
     164        /* Word 3 */
    165165        uint64_t ig3 : 64;
    166166} __attribute__ ((packed));
    167167
    168 typedef union vhpt_entry {
     168typedef union {
    169169        struct vhpt_entry_present present;
    170170        struct vhpt_entry_not_present not_present;
     
    173173
    174174struct region_register_map {
    175         unsigned ve : 1;
    176         unsigned : 1;
    177         unsigned ps : 6;
    178         unsigned rid : 24;
    179         unsigned : 32;
    180 } __attribute__ ((packed));
    181 
    182 typedef union region_register {
     175        unsigned int ve : 1;
     176        unsigned int : 1;
     177        unsigned int ps : 6;
     178        unsigned int rid : 24;
     179        unsigned int : 32;
     180} __attribute__ ((packed));
     181
     182typedef union {
    183183        struct region_register_map map;
    184184        unsigned long long word;
    185 } region_register;
     185} region_register_t;
    186186
    187187struct pta_register_map {
    188         unsigned ve : 1;
    189         unsigned : 1;
    190         unsigned size : 6;
    191         unsigned vf : 1;
    192         unsigned : 6;
     188        unsigned int ve : 1;
     189        unsigned int : 1;
     190        unsigned int size : 6;
     191        unsigned int vf : 1;
     192        unsigned int : 6;
    193193        unsigned long long base : 49;
    194194} __attribute__ ((packed));
     
    197197        struct pta_register_map map;
    198198        uint64_t word;
    199 } pta_register;
     199} pta_register_t;
    200200
    201201/** Return Translation Hashed Entry Address.
     
    211211{
    212212        uint64_t ret;
    213 
    214         asm volatile ("thash %0 = %1\n" : "=r" (ret) : "r" (va));
    215 
     213       
     214        asm volatile (
     215                "thash %[ret] = %[va]\n"
     216                : [ret] "=r" (ret)
     217                : [va] "r" (va)
     218        );
     219       
    216220        return ret;
    217221}
     
    229233{
    230234        uint64_t ret;
    231 
    232         asm volatile ("ttag %0 = %1\n" : "=r" (ret) : "r" (va));
    233 
     235       
     236        asm volatile (
     237                "ttag %[ret] = %[va]\n"
     238                : [ret] "=r" (ret)
     239                : [va] "r" (va)
     240        );
     241       
    234242        return ret;
    235243}
     
    244252{
    245253        uint64_t ret;
     254       
    246255        ASSERT(i < REGION_REGISTERS);
    247         asm volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i << VRN_SHIFT));
     256       
     257        asm volatile (
     258                "mov %[ret] = rr[%[index]]\n"
     259                : [ret] "=r" (ret)
     260                : [index] "r" (i << VRN_SHIFT)
     261        );
     262       
    248263        return ret;
    249264}
     
    257272{
    258273        ASSERT(i < REGION_REGISTERS);
    259         asm volatile (
    260                 "mov rr[%0] = %1\n"
    261                 :
    262                 : "r" (i << VRN_SHIFT), "r" (v)
    263         );
    264 }
    265  
     274       
     275        asm volatile (
     276                "mov rr[%[index]] = %[value]\n"
     277                :: [index] "r" (i << VRN_SHIFT),
     278                   [value] "r" (v)
     279        );
     280}
     281
    266282/** Read Page Table Register.
    267283 *
     
    272288        uint64_t ret;
    273289       
    274         asm volatile ("mov %0 = cr.pta\n" : "=r" (ret));
     290        asm volatile (
     291                "mov %[ret] = cr.pta\n"
     292                : [ret] "=r" (ret)
     293        );
    275294       
    276295        return ret;
     
    283302static inline void pta_write(uint64_t v)
    284303{
    285         asm volatile ("mov cr.pta = %0\n" : : "r" (v));
     304        asm volatile (
     305                "mov cr.pta = %[value]\n"
     306                :: [value] "r" (v)
     307        );
    286308}
    287309
  • kernel/arch/ia64/include/mm/tlb.h

    r029d94a r5bda2f3e  
    2727 */
    2828
    29 /** @addtogroup ia64mm 
     29/** @addtogroup ia64mm
    3030 * @{
    3131 */
     
    4242
    4343/** Data and instruction Translation Register indices. */
    44 #define DTR_KERNEL      0
    45 #define ITR_KERNEL      0
    46 #define DTR_KSTACK1     4
    47 #define DTR_KSTACK2     5
     44#define DTR_KERNEL   0
     45#define ITR_KERNEL   0
     46#define DTR_KSTACK1  4
     47#define DTR_KSTACK2  5
    4848
    4949/** Portion of TLB insertion format data structure. */
    50 union tlb_entry {
     50typedef union {
    5151        uint64_t word[2];
    5252        struct {
    5353                /* Word 0 */
    54                 unsigned p : 1;                 /**< Present. */
    55                 unsigned : 1;
    56                 unsigned ma : 3;                /**< Memory attribute. */
    57                 unsigned a : 1;                 /**< Accessed. */
    58                 unsigned d : 1;                 /**< Dirty. */
    59                 unsigned pl : 2;                /**< Privilege level. */
    60                 unsigned ar : 3;                /**< Access rights. */
    61                 unsigned long long ppn : 38;    /**< Physical Page Number, a.k.a. PFN. */
    62                 unsigned : 2;
    63                 unsigned ed : 1;
    64                 unsigned ig1 : 11;
    65 
     54                unsigned int p : 1;           /**< Present. */
     55                unsigned int : 1;
     56                unsigned int ma : 3;          /**< Memory attribute. */
     57                unsigned int a : 1;           /**< Accessed. */
     58                unsigned int d : 1;           /**< Dirty. */
     59                unsigned int pl : 2;          /**< Privilege level. */
     60                unsigned int ar : 3;          /**< Access rights. */
     61                unsigned long long ppn : 38;  /**< Physical Page Number, a.k.a. PFN. */
     62                unsigned int : 2;
     63                unsigned int ed : 1;
     64                unsigned int ig1 : 11;
     65               
    6666                /* Word 1 */
    67                 unsigned : 2;
    68                 unsigned ps : 6;                /**< Page size will be 2^ps. */
    69                 unsigned key : 24;              /**< Protection key, unused. */
    70                 unsigned : 32;
     67                unsigned int : 2;
     68                unsigned int ps : 6;    /**< Page size will be 2^ps. */
     69                unsigned int key : 24;  /**< Protection key, unused. */
     70                unsigned int : 32;
    7171        } __attribute__ ((packed));
    72 } __attribute__ ((packed));
    73 typedef union tlb_entry tlb_entry_t;
     72} __attribute__ ((packed)) tlb_entry_t;
    7473
    7574extern void tc_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, bool dtc);
Note: See TracChangeset for help on using the changeset viewer.