docs: xtensa: convert to ReST
Rename the xtensa documentation files to ReST, add an index for them and adjust in order to produce a nice html output via the Sphinx build system. At its new index.rst, let's add a :orphan: while this is not linked to the main index.rst file, in order to avoid build warnings. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
b0a4aa950c
commit
8ea0afa3b8
|
@ -1,3 +1,7 @@
|
||||||
|
===========================================
|
||||||
|
Atomic Operation Control (ATOMCTL) Register
|
||||||
|
===========================================
|
||||||
|
|
||||||
We Have Atomic Operation Control (ATOMCTL) Register.
|
We Have Atomic Operation Control (ATOMCTL) Register.
|
||||||
This register determines the effect of using a S32C1I instruction
|
This register determines the effect of using a S32C1I instruction
|
||||||
with various combinations of:
|
with various combinations of:
|
||||||
|
@ -8,7 +12,7 @@ with various combinations of:
|
||||||
2. With and without An Intelligent Memory Controller which
|
2. With and without An Intelligent Memory Controller which
|
||||||
can do Atomic Transactions itself.
|
can do Atomic Transactions itself.
|
||||||
|
|
||||||
The Core comes up with a default value of for the three types of cache ops:
|
The Core comes up with a default value of for the three types of cache ops::
|
||||||
|
|
||||||
0x28: (WB: Internal, WT: Internal, BY:Exception)
|
0x28: (WB: Internal, WT: Internal, BY:Exception)
|
||||||
|
|
||||||
|
@ -30,15 +34,18 @@ CUSTOMER-WARNING:
|
||||||
Developers might find using RCW in Bypass mode convenient when testing
|
Developers might find using RCW in Bypass mode convenient when testing
|
||||||
with the cache being bypassed; for example studying cache alias problems.
|
with the cache being bypassed; for example studying cache alias problems.
|
||||||
|
|
||||||
See Section 4.3.12.4 of ISA; Bits:
|
See Section 4.3.12.4 of ISA; Bits::
|
||||||
|
|
||||||
WB WT BY
|
WB WT BY
|
||||||
5 4 | 3 2 | 1 0
|
5 4 | 3 2 | 1 0
|
||||||
|
|
||||||
|
========= ================== ================== ===============
|
||||||
2 Bit
|
2 Bit
|
||||||
Field
|
Field
|
||||||
Values WB - Write Back WT - Write Thru BY - Bypass
|
Values WB - Write Back WT - Write Thru BY - Bypass
|
||||||
--------- --------------- ----------------- ----------------
|
========= ================== ================== ===============
|
||||||
0 Exception Exception Exception
|
0 Exception Exception Exception
|
||||||
1 RCW Transaction RCW Transaction RCW Transaction
|
1 RCW Transaction RCW Transaction RCW Transaction
|
||||||
2 Internal Operation Internal Operation Reserved
|
2 Internal Operation Internal Operation Reserved
|
||||||
3 Reserved Reserved Reserved
|
3 Reserved Reserved Reserved
|
||||||
|
========= ================== ================== ===============
|
|
@ -1,10 +1,13 @@
|
||||||
Passing boot parameters to the kernel.
|
=====================================
|
||||||
|
Passing boot parameters to the kernel
|
||||||
|
=====================================
|
||||||
|
|
||||||
Boot parameters are represented as a TLV list in the memory. Please see
|
Boot parameters are represented as a TLV list in the memory. Please see
|
||||||
arch/xtensa/include/asm/bootparam.h for definition of the bp_tag structure and
|
arch/xtensa/include/asm/bootparam.h for definition of the bp_tag structure and
|
||||||
tag value constants. First entry in the list must have type BP_TAG_FIRST, last
|
tag value constants. First entry in the list must have type BP_TAG_FIRST, last
|
||||||
entry must have type BP_TAG_LAST. The address of the first list entry is
|
entry must have type BP_TAG_LAST. The address of the first list entry is
|
||||||
passed to the kernel in the register a2. The address type depends on MMU type:
|
passed to the kernel in the register a2. The address type depends on MMU type:
|
||||||
|
|
||||||
- For configurations without MMU, with region protection or with MPU the
|
- For configurations without MMU, with region protection or with MPU the
|
||||||
address must be the physical address.
|
address must be the physical address.
|
||||||
- For configurations with region translarion MMU or with MMUv3 and CONFIG_MMU=n
|
- For configurations with region translarion MMU or with MMUv3 and CONFIG_MMU=n
|
|
@ -0,0 +1,12 @@
|
||||||
|
:orphan:
|
||||||
|
|
||||||
|
===================
|
||||||
|
Xtensa Architecture
|
||||||
|
===================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
|
||||||
|
atomctl
|
||||||
|
booting
|
||||||
|
mmu
|
|
@ -0,0 +1,195 @@
|
||||||
|
=============================
|
||||||
|
MMUv3 initialization sequence
|
||||||
|
=============================
|
||||||
|
|
||||||
|
The code in the initialize_mmu macro sets up MMUv3 memory mapping
|
||||||
|
identically to MMUv2 fixed memory mapping. Depending on
|
||||||
|
CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX symbol this code is
|
||||||
|
located in addresses it was linked for (symbol undefined), or not
|
||||||
|
(symbol defined), so it needs to be position-independent.
|
||||||
|
|
||||||
|
The code has the following assumptions:
|
||||||
|
|
||||||
|
- This code fragment is run only on an MMU v3.
|
||||||
|
- TLBs are in their reset state.
|
||||||
|
- ITLBCFG and DTLBCFG are zero (reset state).
|
||||||
|
- RASID is 0x04030201 (reset state).
|
||||||
|
- PS.RING is zero (reset state).
|
||||||
|
- LITBASE is zero (reset state, PC-relative literals); required to be PIC.
|
||||||
|
|
||||||
|
TLB setup proceeds along the following steps.
|
||||||
|
|
||||||
|
Legend:
|
||||||
|
|
||||||
|
- VA = virtual address (two upper nibbles of it);
|
||||||
|
- PA = physical address (two upper nibbles of it);
|
||||||
|
- pc = physical range that contains this code;
|
||||||
|
|
||||||
|
After step 2, we jump to virtual address in the range 0x40000000..0x5fffffff
|
||||||
|
or 0x00000000..0x1fffffff, depending on whether the kernel was loaded below
|
||||||
|
0x40000000 or above. That address corresponds to next instruction to execute
|
||||||
|
in this code. After step 4, we jump to intended (linked) address of this code.
|
||||||
|
The scheme below assumes that the kernel is loaded below 0x40000000.
|
||||||
|
|
||||||
|
====== ===== ===== ===== ===== ====== ===== =====
|
||||||
|
- Step0 Step1 Step2 Step3 Step4 Step5
|
||||||
|
|
||||||
|
VA PA PA PA PA VA PA PA
|
||||||
|
====== ===== ===== ===== ===== ====== ===== =====
|
||||||
|
E0..FF -> E0 -> E0 -> E0 F0..FF -> F0 -> F0
|
||||||
|
C0..DF -> C0 -> C0 -> C0 E0..EF -> F0 -> F0
|
||||||
|
A0..BF -> A0 -> A0 -> A0 D8..DF -> 00 -> 00
|
||||||
|
80..9F -> 80 -> 80 -> 80 D0..D7 -> 00 -> 00
|
||||||
|
60..7F -> 60 -> 60 -> 60
|
||||||
|
40..5F -> 40 -> pc -> pc 40..5F -> pc
|
||||||
|
20..3F -> 20 -> 20 -> 20
|
||||||
|
00..1F -> 00 -> 00 -> 00
|
||||||
|
====== ===== ===== ===== ===== ====== ===== =====
|
||||||
|
|
||||||
|
The default location of IO peripherals is above 0xf0000000. This may be changed
|
||||||
|
using a "ranges" property in a device tree simple-bus node. See the Devicetree
|
||||||
|
Specification, section 4.5 for details on the syntax and semantics of
|
||||||
|
simple-bus nodes. The following limitations apply:
|
||||||
|
|
||||||
|
1. Only top level simple-bus nodes are considered
|
||||||
|
|
||||||
|
2. Only one (first) simple-bus node is considered
|
||||||
|
|
||||||
|
3. Empty "ranges" properties are not supported
|
||||||
|
|
||||||
|
4. Only the first triplet in the "ranges" property is considered
|
||||||
|
|
||||||
|
5. The parent-bus-address value is rounded down to the nearest 256MB boundary
|
||||||
|
|
||||||
|
6. The IO area covers the entire 256MB segment of parent-bus-address; the
|
||||||
|
"ranges" triplet length field is ignored
|
||||||
|
|
||||||
|
|
||||||
|
MMUv3 address space layouts.
|
||||||
|
============================
|
||||||
|
|
||||||
|
Default MMUv2-compatible layout::
|
||||||
|
|
||||||
|
Symbol VADDR Size
|
||||||
|
+------------------+
|
||||||
|
| Userspace | 0x00000000 TASK_SIZE
|
||||||
|
+------------------+ 0x40000000
|
||||||
|
+------------------+
|
||||||
|
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
||||||
|
+------------------+
|
||||||
|
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
||||||
|
+------------------+ 0x8e400000
|
||||||
|
+------------------+
|
||||||
|
| VMALLOC area | VMALLOC_START 0xc0000000 128MB - 64KB
|
||||||
|
+------------------+ VMALLOC_END
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_1 0xc7ff0000 DCACHE_WAY_SIZE
|
||||||
|
| remap area 1 |
|
||||||
|
+------------------+
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
||||||
|
| remap area 2 |
|
||||||
|
+------------------+
|
||||||
|
+------------------+
|
||||||
|
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
| | (4MB * DCACHE_N_COLORS)
|
||||||
|
+------------------+
|
||||||
|
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
||||||
|
| | NR_CPUS *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
+------------------+ FIXADDR_TOP 0xcffff000
|
||||||
|
+------------------+
|
||||||
|
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xd0000000 128MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xd8000000 128MB
|
||||||
|
+------------------+
|
||||||
|
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
|
||||||
|
|
||||||
|
256MB cached + 256MB uncached layout::
|
||||||
|
|
||||||
|
Symbol VADDR Size
|
||||||
|
+------------------+
|
||||||
|
| Userspace | 0x00000000 TASK_SIZE
|
||||||
|
+------------------+ 0x40000000
|
||||||
|
+------------------+
|
||||||
|
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
||||||
|
+------------------+
|
||||||
|
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
||||||
|
+------------------+ 0x8e400000
|
||||||
|
+------------------+
|
||||||
|
| VMALLOC area | VMALLOC_START 0xa0000000 128MB - 64KB
|
||||||
|
+------------------+ VMALLOC_END
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_1 0xa7ff0000 DCACHE_WAY_SIZE
|
||||||
|
| remap area 1 |
|
||||||
|
+------------------+
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
||||||
|
| remap area 2 |
|
||||||
|
+------------------+
|
||||||
|
+------------------+
|
||||||
|
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
| | (4MB * DCACHE_N_COLORS)
|
||||||
|
+------------------+
|
||||||
|
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
||||||
|
| | NR_CPUS *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
+------------------+ FIXADDR_TOP 0xaffff000
|
||||||
|
+------------------+
|
||||||
|
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xb0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
+------------------+
|
||||||
|
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
|
||||||
|
|
||||||
|
512MB cached + 512MB uncached layout::
|
||||||
|
|
||||||
|
Symbol VADDR Size
|
||||||
|
+------------------+
|
||||||
|
| Userspace | 0x00000000 TASK_SIZE
|
||||||
|
+------------------+ 0x40000000
|
||||||
|
+------------------+
|
||||||
|
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
||||||
|
+------------------+
|
||||||
|
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
||||||
|
+------------------+ 0x8e400000
|
||||||
|
+------------------+
|
||||||
|
| VMALLOC area | VMALLOC_START 0x90000000 128MB - 64KB
|
||||||
|
+------------------+ VMALLOC_END
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_1 0x97ff0000 DCACHE_WAY_SIZE
|
||||||
|
| remap area 1 |
|
||||||
|
+------------------+
|
||||||
|
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
||||||
|
| remap area 2 |
|
||||||
|
+------------------+
|
||||||
|
+------------------+
|
||||||
|
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
| | (4MB * DCACHE_N_COLORS)
|
||||||
|
+------------------+
|
||||||
|
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
||||||
|
| | NR_CPUS *
|
||||||
|
| | DCACHE_N_COLORS *
|
||||||
|
| | PAGE_SIZE
|
||||||
|
+------------------+ FIXADDR_TOP 0x9ffff000
|
||||||
|
+------------------+
|
||||||
|
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xa0000000 512MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 512MB
|
||||||
|
+------------------+
|
||||||
|
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
||||||
|
+------------------+
|
||||||
|
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
||||||
|
+------------------+
|
|
@ -1,189 +0,0 @@
|
||||||
MMUv3 initialization sequence.
|
|
||||||
|
|
||||||
The code in the initialize_mmu macro sets up MMUv3 memory mapping
|
|
||||||
identically to MMUv2 fixed memory mapping. Depending on
|
|
||||||
CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX symbol this code is
|
|
||||||
located in addresses it was linked for (symbol undefined), or not
|
|
||||||
(symbol defined), so it needs to be position-independent.
|
|
||||||
|
|
||||||
The code has the following assumptions:
|
|
||||||
This code fragment is run only on an MMU v3.
|
|
||||||
TLBs are in their reset state.
|
|
||||||
ITLBCFG and DTLBCFG are zero (reset state).
|
|
||||||
RASID is 0x04030201 (reset state).
|
|
||||||
PS.RING is zero (reset state).
|
|
||||||
LITBASE is zero (reset state, PC-relative literals); required to be PIC.
|
|
||||||
|
|
||||||
TLB setup proceeds along the following steps.
|
|
||||||
|
|
||||||
Legend:
|
|
||||||
VA = virtual address (two upper nibbles of it);
|
|
||||||
PA = physical address (two upper nibbles of it);
|
|
||||||
pc = physical range that contains this code;
|
|
||||||
|
|
||||||
After step 2, we jump to virtual address in the range 0x40000000..0x5fffffff
|
|
||||||
or 0x00000000..0x1fffffff, depending on whether the kernel was loaded below
|
|
||||||
0x40000000 or above. That address corresponds to next instruction to execute
|
|
||||||
in this code. After step 4, we jump to intended (linked) address of this code.
|
|
||||||
The scheme below assumes that the kernel is loaded below 0x40000000.
|
|
||||||
|
|
||||||
Step0 Step1 Step2 Step3 Step4 Step5
|
|
||||||
===== ===== ===== ===== ===== =====
|
|
||||||
VA PA PA PA PA VA PA PA
|
|
||||||
------ -- -- -- -- ------ -- --
|
|
||||||
E0..FF -> E0 -> E0 -> E0 F0..FF -> F0 -> F0
|
|
||||||
C0..DF -> C0 -> C0 -> C0 E0..EF -> F0 -> F0
|
|
||||||
A0..BF -> A0 -> A0 -> A0 D8..DF -> 00 -> 00
|
|
||||||
80..9F -> 80 -> 80 -> 80 D0..D7 -> 00 -> 00
|
|
||||||
60..7F -> 60 -> 60 -> 60
|
|
||||||
40..5F -> 40 -> pc -> pc 40..5F -> pc
|
|
||||||
20..3F -> 20 -> 20 -> 20
|
|
||||||
00..1F -> 00 -> 00 -> 00
|
|
||||||
|
|
||||||
The default location of IO peripherals is above 0xf0000000. This may be changed
|
|
||||||
using a "ranges" property in a device tree simple-bus node. See the Devicetree
|
|
||||||
Specification, section 4.5 for details on the syntax and semantics of
|
|
||||||
simple-bus nodes. The following limitations apply:
|
|
||||||
|
|
||||||
1. Only top level simple-bus nodes are considered
|
|
||||||
|
|
||||||
2. Only one (first) simple-bus node is considered
|
|
||||||
|
|
||||||
3. Empty "ranges" properties are not supported
|
|
||||||
|
|
||||||
4. Only the first triplet in the "ranges" property is considered
|
|
||||||
|
|
||||||
5. The parent-bus-address value is rounded down to the nearest 256MB boundary
|
|
||||||
|
|
||||||
6. The IO area covers the entire 256MB segment of parent-bus-address; the
|
|
||||||
"ranges" triplet length field is ignored
|
|
||||||
|
|
||||||
|
|
||||||
MMUv3 address space layouts.
|
|
||||||
============================
|
|
||||||
|
|
||||||
Default MMUv2-compatible layout.
|
|
||||||
|
|
||||||
Symbol VADDR Size
|
|
||||||
+------------------+
|
|
||||||
| Userspace | 0x00000000 TASK_SIZE
|
|
||||||
+------------------+ 0x40000000
|
|
||||||
+------------------+
|
|
||||||
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
|
||||||
+------------------+
|
|
||||||
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
|
||||||
+------------------+ 0x8e400000
|
|
||||||
+------------------+
|
|
||||||
| VMALLOC area | VMALLOC_START 0xc0000000 128MB - 64KB
|
|
||||||
+------------------+ VMALLOC_END
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_1 0xc7ff0000 DCACHE_WAY_SIZE
|
|
||||||
| remap area 1 |
|
|
||||||
+------------------+
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
|
||||||
| remap area 2 |
|
|
||||||
+------------------+
|
|
||||||
+------------------+
|
|
||||||
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
| | (4MB * DCACHE_N_COLORS)
|
|
||||||
+------------------+
|
|
||||||
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
|
||||||
| | NR_CPUS *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
+------------------+ FIXADDR_TOP 0xcffff000
|
|
||||||
+------------------+
|
|
||||||
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xd0000000 128MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xd8000000 128MB
|
|
||||||
+------------------+
|
|
||||||
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
|
|
||||||
|
|
||||||
256MB cached + 256MB uncached layout.
|
|
||||||
|
|
||||||
Symbol VADDR Size
|
|
||||||
+------------------+
|
|
||||||
| Userspace | 0x00000000 TASK_SIZE
|
|
||||||
+------------------+ 0x40000000
|
|
||||||
+------------------+
|
|
||||||
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
|
||||||
+------------------+
|
|
||||||
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
|
||||||
+------------------+ 0x8e400000
|
|
||||||
+------------------+
|
|
||||||
| VMALLOC area | VMALLOC_START 0xa0000000 128MB - 64KB
|
|
||||||
+------------------+ VMALLOC_END
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_1 0xa7ff0000 DCACHE_WAY_SIZE
|
|
||||||
| remap area 1 |
|
|
||||||
+------------------+
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
|
||||||
| remap area 2 |
|
|
||||||
+------------------+
|
|
||||||
+------------------+
|
|
||||||
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
| | (4MB * DCACHE_N_COLORS)
|
|
||||||
+------------------+
|
|
||||||
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
|
||||||
| | NR_CPUS *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
+------------------+ FIXADDR_TOP 0xaffff000
|
|
||||||
+------------------+
|
|
||||||
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xb0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
+------------------+
|
|
||||||
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
|
|
||||||
|
|
||||||
512MB cached + 512MB uncached layout.
|
|
||||||
|
|
||||||
Symbol VADDR Size
|
|
||||||
+------------------+
|
|
||||||
| Userspace | 0x00000000 TASK_SIZE
|
|
||||||
+------------------+ 0x40000000
|
|
||||||
+------------------+
|
|
||||||
| Page table | XCHAL_PAGE_TABLE_VADDR 0x80000000 XCHAL_PAGE_TABLE_SIZE
|
|
||||||
+------------------+
|
|
||||||
| KASAN shadow map | KASAN_SHADOW_START 0x80400000 KASAN_SHADOW_SIZE
|
|
||||||
+------------------+ 0x8e400000
|
|
||||||
+------------------+
|
|
||||||
| VMALLOC area | VMALLOC_START 0x90000000 128MB - 64KB
|
|
||||||
+------------------+ VMALLOC_END
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_1 0x97ff0000 DCACHE_WAY_SIZE
|
|
||||||
| remap area 1 |
|
|
||||||
+------------------+
|
|
||||||
| Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE
|
|
||||||
| remap area 2 |
|
|
||||||
+------------------+
|
|
||||||
+------------------+
|
|
||||||
| KMAP area | PKMAP_BASE PTRS_PER_PTE *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
| | (4MB * DCACHE_N_COLORS)
|
|
||||||
+------------------+
|
|
||||||
| Atomic KMAP area | FIXADDR_START KM_TYPE_NR *
|
|
||||||
| | NR_CPUS *
|
|
||||||
| | DCACHE_N_COLORS *
|
|
||||||
| | PAGE_SIZE
|
|
||||||
+------------------+ FIXADDR_TOP 0x9ffff000
|
|
||||||
+------------------+
|
|
||||||
| Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xa0000000 512MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 512MB
|
|
||||||
+------------------+
|
|
||||||
| Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB
|
|
||||||
+------------------+
|
|
||||||
| Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB
|
|
||||||
+------------------+
|
|
|
@ -42,7 +42,7 @@
|
||||||
#if XCHAL_HAVE_S32C1I && (XCHAL_HW_MIN_VERSION >= XTENSA_HWVERSION_RC_2009_0)
|
#if XCHAL_HAVE_S32C1I && (XCHAL_HW_MIN_VERSION >= XTENSA_HWVERSION_RC_2009_0)
|
||||||
/*
|
/*
|
||||||
* We Have Atomic Operation Control (ATOMCTL) Register; Initialize it.
|
* We Have Atomic Operation Control (ATOMCTL) Register; Initialize it.
|
||||||
* For details see Documentation/xtensa/atomctl.txt
|
* For details see Documentation/xtensa/atomctl.rst
|
||||||
*/
|
*/
|
||||||
#if XCHAL_DCACHE_IS_COHERENT
|
#if XCHAL_DCACHE_IS_COHERENT
|
||||||
movi a3, 0x25 /* For SMP/MX -- internal for writeback,
|
movi a3, 0x25 /* For SMP/MX -- internal for writeback,
|
||||||
|
|
Loading…
Reference in New Issue