root/arch/hexagon/kernel/vm_init_segtable.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Initial page table for Linux kernel under Hexagon VM,
   4  *
   5  * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
   6  */
   7 
   8 /*
   9  * These tables are pre-computed and linked into kernel.
  10  */
  11 
  12 #include <asm/vm_mmu.h>
  13 /*  #include <asm/iomap.h>  */
  14 
  15 /*
  16  * Start with mapping PA=0 to both VA=0x0 and VA=0xc000000 as 16MB large pages.
  17  * No user mode access, RWX, write-back cache.  The entry needs
  18  * to be replicated for all 4 virtual segments mapping to the page.
  19  */
  20 
  21 /* "Big Kernel Page"  */
  22 #define BKP(pa) (((pa) & __HVM_PTE_PGMASK_4MB)          \
  23                 | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X       \
  24                 | __HEXAGON_C_WB_L2 << 6                        \
  25                 | __HVM_PDE_S_16MB)
  26 
  27 /*  No cache version  */
  28 
  29 #define BKPG_IO(pa) (((pa) & __HVM_PTE_PGMASK_16MB) \
  30                         | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
  31                         | __HVM_PDE_S_16MB | __HEXAGON_C_DEV << 6 )
  32 
  33 #define FOURK_IO(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
  34                         | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \
  35                         | __HEXAGON_C_DEV << 6 )
  36 
  37 #define L2_PTR(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \
  38                         | __HVM_PDE_S_4KB  )
  39 
  40 #define X __HVM_PDE_S_INVALID
  41 
  42         .p2align 12
  43         .globl swapper_pg_dir
  44         .globl _K_init_segtable
  45 swapper_pg_dir:
  46 /* VA 0x00000000 */
  47         .word X,X,X,X
  48         .word X,X,X,X
  49         .word X,X,X,X
  50         .word X,X,X,X
  51         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  52         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  53         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  54         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  55         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  56         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  57         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  58         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  59 /* VA 0x40000000 */
  60         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  61         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  62         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  63         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  64         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  65         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  66         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  67         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  68 /* VA 0x80000000 */
  69         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  70         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  71         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  72         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  73         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  74 /*0xa8*/.word X,X,X,X
  75 #ifdef CONFIG_COMET_EARLY_UART_DEBUG
  76 UART_PTE_ENTRY:
  77 /*0xa9*/.word BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000)
  78 #else
  79 /*0xa9*/.word X,X,X,X
  80 #endif
  81 /*0xaa*/.word X,X,X,X
  82 /*0xab*/.word X,X,X,X
  83 /*0xac*/.word X,X,X,X
  84 /*0xad*/.word X,X,X,X
  85 /*0xae*/.word X,X,X,X
  86 /*0xaf*/.word X,X,X,X
  87 /*0xb0*/.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  88         .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X
  89 _K_init_segtable:
  90 /* VA 0xC0000000 */
  91         .word BKP(0x00000000), BKP(0x00400000), BKP(0x00800000), BKP(0x00c00000)
  92         .word BKP(0x01000000), BKP(0x01400000), BKP(0x01800000), BKP(0x01c00000)
  93         .word BKP(0x02000000), BKP(0x02400000), BKP(0x02800000), BKP(0x02c00000)
  94         .word BKP(0x03000000), BKP(0x03400000), BKP(0x03800000), BKP(0x03c00000)
  95         .word BKP(0x04000000), BKP(0x04400000), BKP(0x04800000), BKP(0x04c00000)
  96         .word BKP(0x05000000), BKP(0x05400000), BKP(0x05800000), BKP(0x05c00000)
  97         .word BKP(0x06000000), BKP(0x06400000), BKP(0x06800000), BKP(0x06c00000)
  98         .word BKP(0x07000000), BKP(0x07400000), BKP(0x07800000), BKP(0x07c00000)
  99 
 100         .word BKP(0x08000000), BKP(0x08400000), BKP(0x08800000), BKP(0x08c00000)
 101         .word BKP(0x09000000), BKP(0x09400000), BKP(0x09800000), BKP(0x09c00000)
 102         .word BKP(0x0a000000), BKP(0x0a400000), BKP(0x0a800000), BKP(0x0ac00000)
 103         .word BKP(0x0b000000), BKP(0x0b400000), BKP(0x0b800000), BKP(0x0bc00000)
 104         .word BKP(0x0c000000), BKP(0x0c400000), BKP(0x0c800000), BKP(0x0cc00000)
 105         .word BKP(0x0d000000), BKP(0x0d400000), BKP(0x0d800000), BKP(0x0dc00000)
 106         .word BKP(0x0e000000), BKP(0x0e400000), BKP(0x0e800000), BKP(0x0ec00000)
 107         .word BKP(0x0f000000), BKP(0x0f400000), BKP(0x0f800000), BKP(0x0fc00000)
 108 
 109         .word BKP(0x10000000), BKP(0x10400000), BKP(0x10800000), BKP(0x10c00000)
 110         .word BKP(0x11000000), BKP(0x11400000), BKP(0x11800000), BKP(0x11c00000)
 111         .word BKP(0x12000000), BKP(0x12400000), BKP(0x12800000), BKP(0x12c00000)
 112         .word BKP(0x13000000), BKP(0x13400000), BKP(0x13800000), BKP(0x13c00000)
 113         .word BKP(0x14000000), BKP(0x14400000), BKP(0x14800000), BKP(0x14c00000)
 114         .word BKP(0x15000000), BKP(0x15400000), BKP(0x15800000), BKP(0x15c00000)
 115         .word BKP(0x16000000), BKP(0x16400000), BKP(0x16800000), BKP(0x16c00000)
 116         .word BKP(0x17000000), BKP(0x17400000), BKP(0x17800000), BKP(0x17c00000)
 117 
 118         .word BKP(0x18000000), BKP(0x18400000), BKP(0x18800000), BKP(0x18c00000)
 119         .word BKP(0x19000000), BKP(0x19400000), BKP(0x19800000), BKP(0x19c00000)
 120         .word BKP(0x1a000000), BKP(0x1a400000), BKP(0x1a800000), BKP(0x1ac00000)
 121         .word BKP(0x1b000000), BKP(0x1b400000), BKP(0x1b800000), BKP(0x1bc00000)
 122         .word BKP(0x1c000000), BKP(0x1c400000), BKP(0x1c800000), BKP(0x1cc00000)
 123         .word BKP(0x1d000000), BKP(0x1d400000), BKP(0x1d800000), BKP(0x1dc00000)
 124         .word BKP(0x1e000000), BKP(0x1e400000), BKP(0x1e800000), BKP(0x1ec00000)
 125         .word BKP(0x1f000000), BKP(0x1f400000), BKP(0x1f800000), BKP(0x1fc00000)
 126 
 127         .word BKP(0x20000000), BKP(0x20400000), BKP(0x20800000), BKP(0x20c00000)
 128         .word BKP(0x21000000), BKP(0x21400000), BKP(0x21800000), BKP(0x21c00000)
 129         .word BKP(0x22000000), BKP(0x22400000), BKP(0x22800000), BKP(0x22c00000)
 130         .word BKP(0x23000000), BKP(0x23400000), BKP(0x23800000), BKP(0x23c00000)
 131         .word BKP(0x24000000), BKP(0x24400000), BKP(0x24800000), BKP(0x24c00000)
 132         .word BKP(0x25000000), BKP(0x25400000), BKP(0x25800000), BKP(0x25c00000)
 133         .word BKP(0x26000000), BKP(0x26400000), BKP(0x26800000), BKP(0x26c00000)
 134         .word BKP(0x27000000), BKP(0x27400000), BKP(0x27800000), BKP(0x27c00000)
 135 
 136         .word BKP(0x28000000), BKP(0x28400000), BKP(0x28800000), BKP(0x28c00000)
 137         .word BKP(0x29000000), BKP(0x29400000), BKP(0x29800000), BKP(0x29c00000)
 138         .word BKP(0x2a000000), BKP(0x2a400000), BKP(0x2a800000), BKP(0x2ac00000)
 139         .word BKP(0x2b000000), BKP(0x2b400000), BKP(0x2b800000), BKP(0x2bc00000)
 140         .word BKP(0x2c000000), BKP(0x2c400000), BKP(0x2c800000), BKP(0x2cc00000)
 141         .word BKP(0x2d000000), BKP(0x2d400000), BKP(0x2d800000), BKP(0x2dc00000)
 142         .word BKP(0x2e000000), BKP(0x2e400000), BKP(0x2e800000), BKP(0x2ec00000)
 143         .word BKP(0x2f000000), BKP(0x2f400000), BKP(0x2f800000), BKP(0x2fc00000)
 144 
 145         .word BKP(0x30000000), BKP(0x30400000), BKP(0x30800000), BKP(0x30c00000)
 146         .word BKP(0x31000000), BKP(0x31400000), BKP(0x31800000), BKP(0x31c00000)
 147         .word BKP(0x32000000), BKP(0x32400000), BKP(0x32800000), BKP(0x32c00000)
 148         .word BKP(0x33000000), BKP(0x33400000), BKP(0x33800000), BKP(0x33c00000)
 149         .word BKP(0x34000000), BKP(0x34400000), BKP(0x34800000), BKP(0x34c00000)
 150         .word BKP(0x35000000), BKP(0x35400000), BKP(0x35800000), BKP(0x35c00000)
 151         .word BKP(0x36000000), BKP(0x36400000), BKP(0x36800000), BKP(0x36c00000)
 152         .word BKP(0x37000000), BKP(0x37400000), BKP(0x37800000), BKP(0x37c00000)
 153 
 154         .word BKP(0x38000000), BKP(0x38400000), BKP(0x38800000), BKP(0x38c00000)
 155         .word BKP(0x39000000), BKP(0x39400000), BKP(0x39800000), BKP(0x39c00000)
 156         .word BKP(0x3a000000), BKP(0x3a400000), BKP(0x3a800000), BKP(0x3ac00000)
 157         .word BKP(0x3b000000), BKP(0x3b400000), BKP(0x3b800000), BKP(0x3bc00000)
 158         .word BKP(0x3c000000), BKP(0x3c400000), BKP(0x3c800000), BKP(0x3cc00000)
 159         .word BKP(0x3d000000), BKP(0x3d400000), BKP(0x3d800000), BKP(0x3dc00000)
 160 _K_io_map:
 161         .word X,X,X,X /* 0x3e000000 - device IO early remap */
 162         .word X,X,X,X /* 0x3f000000 - hypervisor space*/
 163 
 164 #if 0
 165 /*
 166  * This is in here as an example for devices which need to be mapped really
 167  * early.
 168  */
 169         .p2align 12
 170         .globl _K_io_kmap
 171         .globl _K_init_devicetable
 172 _K_init_devicetable:  /*  Should be 4MB worth of entries  */
 173         .word FOURK_IO(MSM_GPIO1_PHYS),FOURK_IO(MSM_GPIO2_PHYS),FOURK_IO(MSM_SIRC_PHYS),X
 174         .word FOURK_IO(TLMM_GPIO1_PHYS),X,X,X
 175         .word X,X,X,X
 176         .word X,X,X,X
 177         .word X,X,X,X
 178         .word X,X,X,X
 179         .word X,X,X,X
 180         .word X,X,X,X
 181         .word X,X,X,X
 182         .word X,X,X,X
 183         .word X,X,X,X
 184         .word X,X,X,X
 185         .word X,X,X,X
 186         .word X,X,X,X
 187         .word X,X,X,X
 188         .word X,X,X,X
 189         .word X,X,X,X
 190         .word X,X,X,X
 191         .word X,X,X,X
 192         .word X,X,X,X
 193         .word X,X,X,X
 194         .word X,X,X,X
 195         .word X,X,X,X
 196         .word X,X,X,X
 197         .word X,X,X,X
 198         .word X,X,X,X
 199         .word X,X,X,X
 200         .word X,X,X,X
 201         .word X,X,X,X
 202         .word X,X,X,X
 203         .word X,X,X,X
 204         .word X,X,X,X
 205         .word X,X,X,X
 206         .word X,X,X,X
 207         .word X,X,X,X
 208         .word X,X,X,X
 209         .word X,X,X,X
 210         .word X,X,X,X
 211         .word X,X,X,X
 212         .word X,X,X,X
 213         .word X,X,X,X
 214         .word X,X,X,X
 215         .word X,X,X,X
 216         .word X,X,X,X
 217         .word X,X,X,X
 218         .word X,X,X,X
 219         .word X,X,X,X
 220         .word X,X,X,X
 221         .word X,X,X,X
 222         .word X,X,X,X
 223         .word X,X,X,X
 224         .word X,X,X,X
 225         .word X,X,X,X
 226         .word X,X,X,X
 227         .word X,X,X,X
 228         .word X,X,X,X
 229         .word X,X,X,X
 230         .word X,X,X,X
 231         .word X,X,X,X
 232         .word X,X,X,X
 233         .word X,X,X,X
 234         .word X,X,X,X
 235         .word X,X,X,X
 236         .word X,X,X,X
 237         .word X,X,X,X
 238         .word X,X,X,X
 239         .word X,X,X,X
 240         .word X,X,X,X
 241         .word X,X,X,X
 242         .word X,X,X,X
 243         .word X,X,X,X
 244         .word X,X,X,X
 245         .word X,X,X,X
 246         .word X,X,X,X
 247         .word X,X,X,X
 248         .word X,X,X,X
 249         .word X,X,X,X
 250         .word X,X,X,X
 251         .word X,X,X,X
 252         .word X,X,X,X
 253         .word X,X,X,X
 254         .word X,X,X,X
 255         .word X,X,X,X
 256         .word X,X,X,X
 257         .word X,X,X,X
 258         .word X,X,X,X
 259         .word X,X,X,X
 260         .word X,X,X,X
 261         .word X,X,X,X
 262         .word X,X,X,X
 263         .word X,X,X,X
 264         .word X,X,X,X
 265         .word X,X,X,X
 266         .word X,X,X,X
 267         .word X,X,X,X
 268         .word X,X,X,X
 269         .word X,X,X,X
 270         .word X,X,X,X
 271         .word X,X,X,X
 272         .word X,X,X,X
 273         .word X,X,X,X
 274         .word X,X,X,X
 275         .word X,X,X,X
 276         .word X,X,X,X
 277         .word X,X,X,X
 278         .word X,X,X,X
 279         .word X,X,X,X
 280         .word X,X,X,X
 281         .word X,X,X,X
 282         .word X,X,X,X
 283         .word X,X,X,X
 284         .word X,X,X,X
 285         .word X,X,X,X
 286         .word X,X,X,X
 287         .word X,X,X,X
 288         .word X,X,X,X
 289         .word X,X,X,X
 290         .word X,X,X,X
 291         .word X,X,X,X
 292         .word X,X,X,X
 293         .word X,X,X,X
 294         .word X,X,X,X
 295         .word X,X,X,X
 296         .word X,X,X,X
 297         .word X,X,X,X
 298         .word X,X,X,X
 299         .word X,X,X,X
 300         .word X,X,X,X
 301         .word X,X,X,X
 302         .word X,X,X,X
 303         .word X,X,X,X
 304         .word X,X,X,X
 305         .word X,X,X,X
 306         .word X,X,X,X
 307         .word X,X,X,X
 308         .word X,X,X,X
 309         .word X,X,X,X
 310         .word X,X,X,X
 311         .word X,X,X,X
 312         .word X,X,X,X
 313         .word X,X,X,X
 314         .word X,X,X,X
 315         .word X,X,X,X
 316         .word X,X,X,X
 317         .word X,X,X,X
 318         .word X,X,X,X
 319         .word X,X,X,X
 320         .word X,X,X,X
 321         .word X,X,X,X
 322         .word X,X,X,X
 323         .word X,X,X,X
 324         .word X,X,X,X
 325         .word X,X,X,X
 326         .word X,X,X,X
 327         .word X,X,X,X
 328         .word X,X,X,X
 329         .word X,X,X,X
 330         .word X,X,X,X
 331         .word X,X,X,X
 332         .word X,X,X,X
 333         .word X,X,X,X
 334         .word X,X,X,X
 335         .word X,X,X,X
 336         .word X,X,X,X
 337         .word X,X,X,X
 338         .word X,X,X,X
 339         .word X,X,X,X
 340         .word X,X,X,X
 341         .word X,X,X,X
 342         .word X,X,X,X
 343         .word X,X,X,X
 344         .word X,X,X,X
 345         .word X,X,X,X
 346         .word X,X,X,X
 347         .word X,X,X,X
 348         .word X,X,X,X
 349         .word X,X,X,X
 350         .word X,X,X,X
 351         .word X,X,X,X
 352         .word X,X,X,X
 353         .word X,X,X,X
 354         .word X,X,X,X
 355         .word X,X,X,X
 356         .word X,X,X,X
 357         .word X,X,X,X
 358         .word X,X,X,X
 359         .word X,X,X,X
 360         .word X,X,X,X
 361         .word X,X,X,X
 362         .word X,X,X,X
 363         .word X,X,X,X
 364         .word X,X,X,X
 365         .word X,X,X,X
 366         .word X,X,X,X
 367         .word X,X,X,X
 368         .word X,X,X,X
 369         .word X,X,X,X
 370         .word X,X,X,X
 371         .word X,X,X,X
 372         .word X,X,X,X
 373         .word X,X,X,X
 374         .word X,X,X,X
 375         .word X,X,X,X
 376         .word X,X,X,X
 377         .word X,X,X,X
 378         .word X,X,X,X
 379         .word X,X,X,X
 380         .word X,X,X,X
 381         .word X,X,X,X
 382         .word X,X,X,X
 383         .word X,X,X,X
 384         .word X,X,X,X
 385         .word X,X,X,X
 386         .word X,X,X,X
 387         .word X,X,X,X
 388         .word X,X,X,X
 389         .word X,X,X,X
 390         .word X,X,X,X
 391         .word X,X,X,X
 392         .word X,X,X,X
 393         .word X,X,X,X
 394         .word X,X,X,X
 395         .word X,X,X,X
 396         .word X,X,X,X
 397         .word X,X,X,X
 398         .word X,X,X,X
 399         .word X,X,X,X
 400         .word X,X,X,X
 401         .word X,X,X,X
 402         .word X,X,X,X
 403         .word X,X,X,X
 404         .word X,X,X,X
 405         .word X,X,X,X
 406         .word X,X,X,X
 407         .word X,X,X,X
 408         .word X,X,X,X
 409         .word X,X,X,X
 410         .word X,X,X,X
 411         .word X,X,X,X
 412         .word X,X,X,X
 413         .word X,X,X,X
 414         .word X,X,X,X
 415         .word X,X,X,X
 416         .word X,X,X,X
 417         .word X,X,X,X
 418         .word X,X,X,X
 419         .word X,X,X,X
 420         .word X,X,X,X
 421         .word X,X,X,X
 422         .word X,X,X,X
 423         .word X,X,X,X
 424         .word X,X,X,X
 425         .word X,X,X,X
 426         .word X,X,X,X
 427         .word X,X,X,X
 428         .word X,X,X,X
 429 #endif

/* [<][>][^][v][top][bottom][index][help] */