Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'xtensa-20161005' of git://github.com/jcmvbkbc/linux-xtensa

Pull Xtensa updates from Max Filippov:
"Updates for the xtensa architecture. It is a combined set of patches
for 4.8 that never got to the mainline and new patches for 4.9.

- add new kernel memory layouts for MMUv3 cores: with 256MB and 512MB
KSEG size, starting at physical address other than 0

- make kernel load address configurable

- clean up kernel memory layout macros

- drop sysmem early allocator and switch to memblock

- enable kmemleak and memory reservation from the device tree

- wire up new syscalls: userfaultfd, membarrier, mlock2,
copy_file_range, preadv2 and pwritev2

- add new platform: Cadence Configurable System Platform (CSP) and
new core variant for it: xt_lnx

- rearrange CCOUNT calibration code, make most of it generic

- improve machine reset code (XTFPGA now reboots reliably with MMUv3
cores)

- provide default memmap command line option for configurations
without device tree support

- ISS fixes: simdisk is now capable of using highmem pages, panic
correctly terminates simulator"

* tag 'xtensa-20161005' of git://github.com/jcmvbkbc/linux-xtensa: (24 commits)
xtensa: disable MMU initialization option on MMUv2 cores
xtensa: add default memmap and mmio32native options to defconfigs
xtensa: add default memmap option to common_defconfig
xtensa: add default memmap option to iss_defconfig
xtensa: ISS: allow simdisk to use high memory buffers
xtensa: ISS: define simc_exit and use it instead of inline asm
xtensa: xtfpga: group platform_* functions together
xtensa: rearrange CCOUNT calibration
xtensa: xtfpga: use clock provider, don't update DT
xtensa: Tweak xuartps UART driver Rx watermark for Cadence CSP config.
xtensa: initialize MMU before jumping to reset vector
xtensa: fix icountlevel setting in cpu_reset
xtensa: extract common CPU reset code into separate function
xtensa: Added Cadence CSP kernel configuration for Xtensa
xtensa: fix default kernel load address
xtensa: wire up new syscalls
xtensa: support reserved-memory DT node
xtensa: drop sysmem and switch to memblock
xtensa: minimize use of PLATFORM_DEFAULT_MEM_{ADDR,SIZE}
xtensa: cleanup MMU setup and kernel layout macros
...

+1806 -1927
+144 -25
Documentation/xtensa/mmu.txt
··· 3 3 The code in the initialize_mmu macro sets up MMUv3 memory mapping 4 4 identically to MMUv2 fixed memory mapping. Depending on 5 5 CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX symbol this code is 6 - located in one of the following address ranges: 7 - 8 - 0xF0000000..0xFFFFFFFF (will keep same address in MMU v2 layout; 9 - typically ROM) 10 - 0x00000000..0x07FFFFFF (system RAM; this code is actually linked 11 - at 0xD0000000..0xD7FFFFFF [cached] 12 - or 0xD8000000..0xDFFFFFFF [uncached]; 13 - in any case, initially runs elsewhere 14 - than linked, so have to be careful) 6 + located in addresses it was linked for (symbol undefined), or not 7 + (symbol defined), so it needs to be position-independent. 15 8 16 9 The code has the following assumptions: 17 10 This code fragment is run only on an MMU v3. ··· 21 28 PA = physical address (two upper nibbles of it); 22 29 pc = physical range that contains this code; 23 30 24 - After step 2, we jump to virtual address in 0x40000000..0x5fffffff 25 - that corresponds to next instruction to execute in this code. 26 - After step 4, we jump to intended (linked) address of this code. 31 + After step 2, we jump to virtual address in the range 0x40000000..0x5fffffff 32 + or 0x00000000..0x1fffffff, depending on whether the kernel was loaded below 33 + 0x40000000 or above. That address corresponds to next instruction to execute 34 + in this code. After step 4, we jump to intended (linked) address of this code. 35 + The scheme below assumes that the kernel is loaded below 0x40000000. 27 36 28 - Step 0 Step1 Step 2 Step3 Step 4 Step5 29 - ============ ===== ============ ===== ============ ===== 30 - VA PA PA VA PA PA VA PA PA 31 - ------ -- -- ------ -- -- ------ -- -- 32 - E0..FF -> E0 -> E0 E0..FF -> E0 F0..FF -> F0 -> F0 33 - C0..DF -> C0 -> C0 C0..DF -> C0 E0..EF -> F0 -> F0 34 - A0..BF -> A0 -> A0 A0..BF -> A0 D8..DF -> 00 -> 00 35 - 80..9F -> 80 -> 80 80..9F -> 80 D0..D7 -> 00 -> 00 36 - 60..7F -> 60 -> 60 60..7F -> 60 37 - 40..5F -> 40 40..5F -> pc -> pc 40..5F -> pc 38 - 20..3F -> 20 -> 20 20..3F -> 20 39 - 00..1F -> 00 -> 00 00..1F -> 00 37 + Step0 Step1 Step2 Step3 Step4 Step5 38 + ===== ===== ===== ===== ===== ===== 39 + VA PA PA PA PA VA PA PA 40 + ------ -- -- -- -- ------ -- -- 41 + E0..FF -> E0 -> E0 -> E0 F0..FF -> F0 -> F0 42 + C0..DF -> C0 -> C0 -> C0 E0..EF -> F0 -> F0 43 + A0..BF -> A0 -> A0 -> A0 D8..DF -> 00 -> 00 44 + 80..9F -> 80 -> 80 -> 80 D0..D7 -> 00 -> 00 45 + 60..7F -> 60 -> 60 -> 60 46 + 40..5F -> 40 -> pc -> pc 40..5F -> pc 47 + 20..3F -> 20 -> 20 -> 20 48 + 00..1F -> 00 -> 00 -> 00 40 49 41 - The default location of IO peripherals is above 0xf0000000. This may change 50 + The default location of IO peripherals is above 0xf0000000. This may be changed 42 51 using a "ranges" property in a device tree simple-bus node. See ePAPR 1.1, §6.5 43 52 for details on the syntax and semantic of simple-bus nodes. The following 44 53 limitations apply: ··· 57 62 58 63 6. The IO area covers the entire 256MB segment of parent-bus-address; the 59 64 "ranges" triplet length field is ignored 65 + 66 + 67 + MMUv3 address space layouts. 68 + ============================ 69 + 70 + Default MMUv2-compatible layout. 71 + 72 + Symbol VADDR Size 73 + +------------------+ 74 + | Userspace | 0x00000000 TASK_SIZE 75 + +------------------+ 0x40000000 76 + +------------------+ 77 + | Page table | 0x80000000 78 + +------------------+ 0x80400000 79 + +------------------+ 80 + | KMAP area | PKMAP_BASE PTRS_PER_PTE * 81 + | | DCACHE_N_COLORS * 82 + | | PAGE_SIZE 83 + | | (4MB * DCACHE_N_COLORS) 84 + +------------------+ 85 + | Atomic KMAP area | FIXADDR_START KM_TYPE_NR * 86 + | | NR_CPUS * 87 + | | DCACHE_N_COLORS * 88 + | | PAGE_SIZE 89 + +------------------+ FIXADDR_TOP 0xbffff000 90 + +------------------+ 91 + | VMALLOC area | VMALLOC_START 0xc0000000 128MB - 64KB 92 + +------------------+ VMALLOC_END 93 + | Cache aliasing | TLBTEMP_BASE_1 0xc7ff0000 DCACHE_WAY_SIZE 94 + | remap area 1 | 95 + +------------------+ 96 + | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE 97 + | remap area 2 | 98 + +------------------+ 99 + +------------------+ 100 + | Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xd0000000 128MB 101 + +------------------+ 102 + | Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xd8000000 128MB 103 + +------------------+ 104 + | Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB 105 + +------------------+ 106 + | Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB 107 + +------------------+ 108 + 109 + 110 + 256MB cached + 256MB uncached layout. 111 + 112 + Symbol VADDR Size 113 + +------------------+ 114 + | Userspace | 0x00000000 TASK_SIZE 115 + +------------------+ 0x40000000 116 + +------------------+ 117 + | Page table | 0x80000000 118 + +------------------+ 0x80400000 119 + +------------------+ 120 + | KMAP area | PKMAP_BASE PTRS_PER_PTE * 121 + | | DCACHE_N_COLORS * 122 + | | PAGE_SIZE 123 + | | (4MB * DCACHE_N_COLORS) 124 + +------------------+ 125 + | Atomic KMAP area | FIXADDR_START KM_TYPE_NR * 126 + | | NR_CPUS * 127 + | | DCACHE_N_COLORS * 128 + | | PAGE_SIZE 129 + +------------------+ FIXADDR_TOP 0x9ffff000 130 + +------------------+ 131 + | VMALLOC area | VMALLOC_START 0xa0000000 128MB - 64KB 132 + +------------------+ VMALLOC_END 133 + | Cache aliasing | TLBTEMP_BASE_1 0xa7ff0000 DCACHE_WAY_SIZE 134 + | remap area 1 | 135 + +------------------+ 136 + | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE 137 + | remap area 2 | 138 + +------------------+ 139 + +------------------+ 140 + | Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xb0000000 256MB 141 + +------------------+ 142 + | Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 256MB 143 + +------------------+ 144 + +------------------+ 145 + | Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB 146 + +------------------+ 147 + | Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB 148 + +------------------+ 149 + 150 + 151 + 512MB cached + 512MB uncached layout. 152 + 153 + Symbol VADDR Size 154 + +------------------+ 155 + | Userspace | 0x00000000 TASK_SIZE 156 + +------------------+ 0x40000000 157 + +------------------+ 158 + | Page table | 0x80000000 159 + +------------------+ 0x80400000 160 + +------------------+ 161 + | KMAP area | PKMAP_BASE PTRS_PER_PTE * 162 + | | DCACHE_N_COLORS * 163 + | | PAGE_SIZE 164 + | | (4MB * DCACHE_N_COLORS) 165 + +------------------+ 166 + | Atomic KMAP area | FIXADDR_START KM_TYPE_NR * 167 + | | NR_CPUS * 168 + | | DCACHE_N_COLORS * 169 + | | PAGE_SIZE 170 + +------------------+ FIXADDR_TOP 0x8ffff000 171 + +------------------+ 172 + | VMALLOC area | VMALLOC_START 0x90000000 128MB - 64KB 173 + +------------------+ VMALLOC_END 174 + | Cache aliasing | TLBTEMP_BASE_1 0x97ff0000 DCACHE_WAY_SIZE 175 + | remap area 1 | 176 + +------------------+ 177 + | Cache aliasing | TLBTEMP_BASE_2 DCACHE_WAY_SIZE 178 + | remap area 2 | 179 + +------------------+ 180 + +------------------+ 181 + | Cached KSEG | XCHAL_KSEG_CACHED_VADDR 0xa0000000 512MB 182 + +------------------+ 183 + | Uncached KSEG | XCHAL_KSEG_BYPASS_VADDR 0xc0000000 512MB 184 + +------------------+ 185 + | Cached KIO | XCHAL_KIO_CACHED_VADDR 0xe0000000 256MB 186 + +------------------+ 187 + | Uncached KIO | XCHAL_KIO_BYPASS_VADDR 0xf0000000 256MB 188 + +------------------+
+78 -17
arch/xtensa/Kconfig
··· 13 13 select GENERIC_IRQ_SHOW 14 14 select GENERIC_PCI_IOMAP 15 15 select GENERIC_SCHED_CLOCK 16 + select HAVE_DEBUG_KMEMLEAK 16 17 select HAVE_DMA_API_DEBUG 17 18 select HAVE_EXIT_THREAD 18 19 select HAVE_FUNCTION_TRACER 19 20 select HAVE_FUTEX_CMPXCHG if !MMU 20 21 select HAVE_HW_BREAKPOINT if PERF_EVENTS 21 22 select HAVE_IRQ_TIME_ACCOUNTING 23 + select HAVE_MEMBLOCK 22 24 select HAVE_OPROFILE 23 25 select HAVE_PERF_EVENTS 24 26 select IRQ_DOMAIN 25 27 select MODULES_USE_ELF_RELA 28 + select NO_BOOTMEM 26 29 select PERF_USE_VMALLOC 27 30 select VIRT_TO_BUS 28 31 help ··· 212 209 213 210 config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 214 211 bool "Initialize Xtensa MMU inside the Linux kernel code" 215 - default y 212 + depends on !XTENSA_VARIANT_FSF && !XTENSA_VARIANT_DC232B 213 + default y if XTENSA_VARIANT_DC233C || XTENSA_VARIANT_CUSTOM 216 214 help 217 215 Earlier version initialized the MMU in the exception vector 218 216 before jumping to _startup in head.S and had an advantage that ··· 239 235 address at 0x00003000 instead of the mapped std of 0xD0003000. 240 236 241 237 If in doubt, say Y. 238 + 239 + config KSEG_PADDR 240 + hex "Physical address of the KSEG mapping" 241 + depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX && MMU 242 + default 0x00000000 243 + help 244 + This is the physical address where KSEG is mapped. Please refer to 245 + the chosen KSEG layout help for the required address alignment. 246 + Unpacked kernel image (including vectors) must be located completely 247 + within KSEG. 248 + Physical memory below this address is not available to linux. 249 + 250 + If unsure, leave the default value here. 251 + 252 + config KERNEL_LOAD_ADDRESS 253 + hex "Kernel load address" 254 + default 0x60003000 if !MMU 255 + default 0x00003000 if MMU && INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 256 + default 0xd0003000 if MMU && !INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 257 + help 258 + This is the address where the kernel is loaded. 259 + It is virtual address for MMUv2 configurations and physical address 260 + for all other configurations. 261 + 262 + If unsure, leave the default value here. 263 + 264 + config VECTORS_OFFSET 265 + hex "Kernel vectors offset" 266 + default 0x00003000 267 + help 268 + This is the offset of the kernel image from the relocatable vectors 269 + base. 270 + 271 + If unsure, leave the default value here. 272 + 273 + choice 274 + prompt "KSEG layout" 275 + depends on MMU 276 + default XTENSA_KSEG_MMU_V2 277 + 278 + config XTENSA_KSEG_MMU_V2 279 + bool "MMUv2: 128MB cached + 128MB uncached" 280 + help 281 + MMUv2 compatible kernel memory map: TLB way 5 maps 128MB starting 282 + at KSEG_PADDR to 0xd0000000 with cache and to 0xd8000000 283 + without cache. 284 + KSEG_PADDR must be aligned to 128MB. 285 + 286 + config XTENSA_KSEG_256M 287 + bool "256MB cached + 256MB uncached" 288 + depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 289 + help 290 + TLB way 6 maps 256MB starting at KSEG_PADDR to 0xb0000000 291 + with cache and to 0xc0000000 without cache. 292 + KSEG_PADDR must be aligned to 256MB. 293 + 294 + config XTENSA_KSEG_512M 295 + bool "512MB cached + 512MB uncached" 296 + depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 297 + help 298 + TLB way 6 maps 512MB starting at KSEG_PADDR to 0xa0000000 299 + with cache and to 0xc0000000 without cache. 300 + KSEG_PADDR must be aligned to 256MB. 301 + 302 + endchoice 242 303 243 304 config HIGHMEM 244 305 bool "High Memory Support" ··· 400 331 config XTENSA_PLATFORM_XTFPGA 401 332 bool "XTFPGA" 402 333 select ETHOC if ETHERNET 403 - select PLATFORM_WANT_DEFAULT_MEM 334 + select PLATFORM_WANT_DEFAULT_MEM if !MMU 404 335 select SERIAL_CONSOLE 405 336 select XTENSA_CALIBRATE_CCOUNT 406 337 help ··· 438 369 bool "Flattened Device Tree support" 439 370 select OF 440 371 select OF_EARLY_FLATTREE 372 + select OF_RESERVED_MEM 441 373 help 442 374 Include support for flattened device tree machine descriptions. 443 375 ··· 509 439 default 0x00000000 if MMU 510 440 default 0x60000000 if !MMU 511 441 help 512 - This is a fallback start address of the default memory area, it is 513 - used when no physical memory size is passed through DTB or through 514 - boot parameter from bootloader. 515 - 516 - In noMMU configuration the following parameters are derived from it: 517 - - kernel load address; 518 - - kernel entry point address; 519 - - relocatable vectors base address; 520 - - uBoot load address; 521 - - TASK_SIZE. 442 + This is the base address of the default memory area. 443 + Default memory area has platform-specific meaning, it may be used 444 + for e.g. early cache initialization. 522 445 523 446 If unsure, leave the default value here. 524 447 ··· 520 457 depends on PLATFORM_WANT_DEFAULT_MEM 521 458 default 0x04000000 522 459 help 523 - This is a fallback size of the default memory area, it is used when 524 - no physical memory size is passed through DTB or through boot 525 - parameter from bootloader. 526 - 527 - It's also used for TASK_SIZE calculation in noMMU configuration. 460 + This is the size of the default memory area. 461 + Default memory area has platform-specific meaning, it may be used 462 + for e.g. early cache initialization. 528 463 529 464 If unsure, leave the default value here. 530 465
+1 -1
arch/xtensa/boot/boot-elf/boot.lds.S
··· 23 23 *(.ResetVector.text) 24 24 } 25 25 26 - .image KERNELOFFSET: AT (LOAD_MEMORY_ADDRESS) 26 + .image KERNELOFFSET: AT (CONFIG_KERNEL_LOAD_ADDRESS) 27 27 { 28 28 _image_start = .; 29 29 *(image)
+6 -1
arch/xtensa/boot/boot-elf/bootstrap.S
··· 35 35 36 36 .align 4 37 37 RomInitAddr: 38 - .word LOAD_MEMORY_ADDRESS 38 + #if defined(CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX) && \ 39 + XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY 40 + .word CONFIG_KERNEL_LOAD_ADDRESS 41 + #else 42 + .word KERNELOFFSET 43 + #endif 39 44 RomBootParam: 40 45 .word _bootparam 41 46 _bootparam:
+1 -9
arch/xtensa/boot/boot-uboot/Makefile
··· 4 4 # for more details. 5 5 # 6 6 7 - ifdef CONFIG_MMU 8 - ifdef CONFIG_INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX 9 - UIMAGE_LOADADDR = 0x00003000 10 - else 11 - UIMAGE_LOADADDR = 0xd0003000 12 - endif 13 - else 14 - UIMAGE_LOADADDR = $(shell printf "0x%x" $$(( ${CONFIG_DEFAULT_MEM_START} + 0x3000 )) ) 15 - endif 7 + UIMAGE_LOADADDR = $(CONFIG_KERNEL_LOAD_ADDRESS) 16 8 UIMAGE_COMPRESSION = gzip 17 9 18 10 $(obj)/../uImage: vmlinux.bin.gz FORCE
+54
arch/xtensa/boot/dts/csp.dts
··· 1 + /dts-v1/; 2 + 3 + / { 4 + compatible = "cdns,xtensa-xtfpga"; 5 + #address-cells = <1>; 6 + #size-cells = <1>; 7 + interrupt-parent = <&pic>; 8 + 9 + chosen { 10 + bootargs = "earlycon=cdns,0xfd000000,115200 console=tty0 console=ttyPS0,115200 root=/dev/ram0 rw earlyprintk xilinx_uartps.rx_trigger_level=32 loglevel=8 nohz=off ignore_loglevel"; 11 + }; 12 + 13 + memory@0 { 14 + device_type = "memory"; 15 + reg = <0x00000000 0x40000000>; 16 + }; 17 + 18 + cpus { 19 + #address-cells = <1>; 20 + #size-cells = <0>; 21 + cpu@0 { 22 + compatible = "cdns,xtensa-cpu"; 23 + reg = <0>; 24 + }; 25 + }; 26 + 27 + pic: pic { 28 + compatible = "cdns,xtensa-pic"; 29 + #interrupt-cells = <2>; 30 + interrupt-controller; 31 + }; 32 + 33 + clocks { 34 + osc: main-oscillator { 35 + #clock-cells = <0>; 36 + compatible = "fixed-clock"; 37 + }; 38 + }; 39 + 40 + soc { 41 + #address-cells = <1>; 42 + #size-cells = <1>; 43 + compatible = "simple-bus"; 44 + ranges = <0x00000000 0xf0000000 0x10000000>; 45 + 46 + uart0: serial@0d000000 { 47 + compatible = "xlnx,xuartps", "cdns,uart-r1p8"; 48 + clocks = <&osc>, <&osc>; 49 + clock-names = "uart_clk", "pclk"; 50 + reg = <0x0d000000 0x1000>; 51 + interrupts = <0 1>; 52 + }; 53 + }; 54 + };
+7 -8
arch/xtensa/boot/dts/xtfpga.dtsi
··· 19 19 cpu@0 { 20 20 compatible = "cdns,xtensa-cpu"; 21 21 reg = <0>; 22 - /* Filled in by platform_setup from FPGA register 23 - * clock-frequency = <100000000>; 24 - */ 22 + clocks = <&osc>; 25 23 }; 26 24 }; 27 25 ··· 34 36 }; 35 37 36 38 clocks { 37 - osc: main-oscillator { 38 - #clock-cells = <0>; 39 - compatible = "fixed-clock"; 40 - }; 41 - 42 39 clk54: clk54 { 43 40 #clock-cells = <0>; 44 41 compatible = "fixed-clock"; ··· 46 53 #size-cells = <1>; 47 54 compatible = "simple-bus"; 48 55 ranges = <0x00000000 0xf0000000 0x10000000>; 56 + 57 + osc: main-oscillator { 58 + #clock-cells = <0>; 59 + compatible = "cdns,xtfpga-clock"; 60 + reg = <0x0d020004 0x4>; 61 + }; 49 62 50 63 serial0: serial@0d050020 { 51 64 device_type = "serial";
+1 -1
arch/xtensa/configs/audio_kc705_defconfig
··· 33 33 # CONFIG_PCI is not set 34 34 CONFIG_XTENSA_PLATFORM_XTFPGA=y 35 35 CONFIG_CMDLINE_BOOL=y 36 - CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug" 36 + CONFIG_CMDLINE="earlycon=uart8250,mmio32native,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=0x38000000@0" 37 37 CONFIG_USE_OF=y 38 38 CONFIG_BUILTIN_DTB="kc705" 39 39 # CONFIG_COMPACTION is not set
+122
arch/xtensa/configs/cadence_csp_defconfig
··· 1 + CONFIG_SYSVIPC=y 2 + CONFIG_POSIX_MQUEUE=y 3 + CONFIG_USELIB=y 4 + CONFIG_IRQ_DOMAIN_DEBUG=y 5 + CONFIG_NO_HZ_IDLE=y 6 + CONFIG_HIGH_RES_TIMERS=y 7 + CONFIG_IRQ_TIME_ACCOUNTING=y 8 + CONFIG_BSD_PROCESS_ACCT=y 9 + CONFIG_CGROUP_FREEZER=y 10 + CONFIG_CPUSETS=y 11 + CONFIG_CGROUP_DEVICE=y 12 + CONFIG_CGROUP_CPUACCT=y 13 + CONFIG_CGROUP_DEBUG=y 14 + CONFIG_NAMESPACES=y 15 + CONFIG_SCHED_AUTOGROUP=y 16 + CONFIG_RELAY=y 17 + CONFIG_BLK_DEV_INITRD=y 18 + CONFIG_INITRAMFS_SOURCE="$$KERNEL_INITRAMFS_SOURCE" 19 + # CONFIG_RD_BZIP2 is not set 20 + # CONFIG_RD_LZMA is not set 21 + # CONFIG_RD_XZ is not set 22 + # CONFIG_RD_LZO is not set 23 + # CONFIG_RD_LZ4 is not set 24 + CONFIG_CC_OPTIMIZE_FOR_SIZE=y 25 + CONFIG_SYSCTL_SYSCALL=y 26 + CONFIG_EMBEDDED=y 27 + CONFIG_PROFILING=y 28 + CONFIG_MODULES=y 29 + CONFIG_MODULE_FORCE_LOAD=y 30 + CONFIG_MODULE_UNLOAD=y 31 + CONFIG_MODULE_FORCE_UNLOAD=y 32 + # CONFIG_IOSCHED_DEADLINE is not set 33 + # CONFIG_IOSCHED_CFQ is not set 34 + CONFIG_XTENSA_VARIANT_CUSTOM=y 35 + CONFIG_XTENSA_VARIANT_CUSTOM_NAME="csp" 36 + CONFIG_XTENSA_UNALIGNED_USER=y 37 + CONFIG_PREEMPT=y 38 + CONFIG_HIGHMEM=y 39 + # CONFIG_PCI is not set 40 + CONFIG_XTENSA_PLATFORM_XTFPGA=y 41 + CONFIG_USE_OF=y 42 + CONFIG_BUILTIN_DTB="csp" 43 + # CONFIG_COMPACTION is not set 44 + CONFIG_XTFPGA_LCD=y 45 + # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 46 + CONFIG_NET=y 47 + CONFIG_PACKET=y 48 + CONFIG_UNIX=y 49 + CONFIG_INET=y 50 + CONFIG_IP_MULTICAST=y 51 + CONFIG_IP_PNP=y 52 + CONFIG_IP_PNP_DHCP=y 53 + CONFIG_IP_PNP_BOOTP=y 54 + CONFIG_IP_PNP_RARP=y 55 + # CONFIG_INET_XFRM_MODE_TRANSPORT is not set 56 + # CONFIG_INET_XFRM_MODE_TUNNEL is not set 57 + # CONFIG_INET_XFRM_MODE_BEET is not set 58 + # CONFIG_INET_DIAG is not set 59 + # CONFIG_IPV6 is not set 60 + # CONFIG_WIRELESS is not set 61 + CONFIG_DEVTMPFS=y 62 + CONFIG_DEVTMPFS_MOUNT=y 63 + # CONFIG_STANDALONE is not set 64 + # CONFIG_FW_LOADER is not set 65 + CONFIG_MTD=y 66 + CONFIG_MTD_CFI=y 67 + CONFIG_MTD_JEDECPROBE=y 68 + CONFIG_MTD_CFI_INTELEXT=y 69 + CONFIG_MTD_CFI_AMDSTD=y 70 + CONFIG_MTD_CFI_STAA=y 71 + CONFIG_MTD_PHYSMAP_OF=y 72 + CONFIG_MTD_UBI=y 73 + CONFIG_BLK_DEV_LOOP=y 74 + CONFIG_BLK_DEV_RAM=y 75 + CONFIG_SCSI=y 76 + CONFIG_BLK_DEV_SD=y 77 + # CONFIG_INPUT_MOUSEDEV is not set 78 + # CONFIG_INPUT_KEYBOARD is not set 79 + # CONFIG_INPUT_MOUSE is not set 80 + CONFIG_LEGACY_PTY_COUNT=16 81 + CONFIG_SERIAL_XILINX_PS_UART=y 82 + CONFIG_SERIAL_XILINX_PS_UART_CONSOLE=y 83 + CONFIG_HW_RANDOM=y 84 + # CONFIG_HWMON is not set 85 + CONFIG_WATCHDOG=y 86 + CONFIG_WATCHDOG_NOWAYOUT=y 87 + CONFIG_SOFT_WATCHDOG=y 88 + # CONFIG_VGA_CONSOLE is not set 89 + # CONFIG_USB_SUPPORT is not set 90 + # CONFIG_IOMMU_SUPPORT is not set 91 + CONFIG_EXT3_FS=y 92 + CONFIG_FANOTIFY=y 93 + CONFIG_VFAT_FS=y 94 + CONFIG_PROC_KCORE=y 95 + CONFIG_TMPFS=y 96 + CONFIG_TMPFS_POSIX_ACL=y 97 + # CONFIG_MISC_FILESYSTEMS is not set 98 + CONFIG_NFS_FS=y 99 + CONFIG_NFS_V4=y 100 + CONFIG_NFS_SWAP=y 101 + CONFIG_ROOT_NFS=y 102 + CONFIG_SUNRPC_DEBUG=y 103 + CONFIG_NLS_CODEPAGE_437=y 104 + CONFIG_NLS_ISO8859_1=y 105 + CONFIG_PRINTK_TIME=y 106 + CONFIG_DYNAMIC_DEBUG=y 107 + CONFIG_DEBUG_INFO=y 108 + CONFIG_MAGIC_SYSRQ=y 109 + CONFIG_LOCKUP_DETECTOR=y 110 + # CONFIG_SCHED_DEBUG is not set 111 + CONFIG_SCHEDSTATS=y 112 + CONFIG_TIMER_STATS=y 113 + CONFIG_DEBUG_RT_MUTEXES=y 114 + CONFIG_PROVE_LOCKING=y 115 + CONFIG_DEBUG_ATOMIC_SLEEP=y 116 + CONFIG_RCU_TRACE=y 117 + CONFIG_FUNCTION_TRACER=y 118 + # CONFIG_S32C1I_SELFTEST is not set 119 + # CONFIG_CRYPTO_ECHAINIV is not set 120 + CONFIG_CRYPTO_DEFLATE=y 121 + CONFIG_CRYPTO_LZO=y 122 + # CONFIG_CRYPTO_HW is not set
+4 -605
arch/xtensa/configs/common_defconfig
··· 1 - # 2 - # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.11-rc2 4 - # Tue Mar 1 16:36:53 2005 5 - # 6 - # CONFIG_FRAME_POINTER is not set 7 - CONFIG_XTENSA=y 8 - # CONFIG_UID16 is not set 9 - CONFIG_RWSEM_XCHGADD_ALGORITHM=y 10 - CONFIG_HAVE_DEC_LOCK=y 11 - 12 - # 13 - # Code maturity level options 14 - # 15 - CONFIG_EXPERIMENTAL=y 16 - CONFIG_CLEAN_COMPILE=y 17 - CONFIG_BROKEN_ON_SMP=y 18 - 19 - # 20 - # General setup 21 - # 22 - CONFIG_LOCALVERSION="" 23 - CONFIG_SWAP=y 24 1 CONFIG_SYSVIPC=y 25 - # CONFIG_POSIX_MQUEUE is not set 26 2 CONFIG_BSD_PROCESS_ACCT=y 27 - # CONFIG_BSD_PROCESS_ACCT_V3 is not set 28 - CONFIG_SYSCTL=y 29 - # CONFIG_AUDIT is not set 30 3 CONFIG_LOG_BUF_SHIFT=14 31 - # CONFIG_HOTPLUG is not set 32 - CONFIG_KOBJECT_UEVENT=y 33 - # CONFIG_IKCONFIG is not set 34 - # CONFIG_EXPERT is not set 35 - CONFIG_KALLSYMS=y 36 - # CONFIG_KALLSYMS_ALL is not set 37 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 38 - CONFIG_FUTEX=y 39 - CONFIG_EPOLL=y 40 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 41 - CONFIG_SHMEM=y 42 - CONFIG_CC_ALIGN_FUNCTIONS=0 43 - CONFIG_CC_ALIGN_LABELS=0 44 - CONFIG_CC_ALIGN_LOOPS=0 45 - CONFIG_CC_ALIGN_JUMPS=0 46 - # CONFIG_TINY_SHMEM is not set 47 - 48 - # 49 - # Loadable module support 50 - # 51 4 CONFIG_MODULES=y 52 - # CONFIG_MODULE_UNLOAD is not set 53 - CONFIG_OBSOLETE_MODPARM=y 54 5 CONFIG_MODVERSIONS=y 55 - # CONFIG_MODULE_SRCVERSION_ALL is not set 56 - CONFIG_KMOD=y 57 - 58 - # 59 - # Processor type and features 60 - # 61 - CONFIG_XTENSA_ARCH_LINUX_BE=y 62 - # CONFIG_XTENSA_ARCH_LINUX_LE is not set 63 - # CONFIG_XTENSA_ARCH_LINUX_TEST is not set 64 - # CONFIG_XTENSA_ARCH_S5 is not set 65 - # CONFIG_XTENSA_CUSTOM is not set 66 - CONFIG_MMU=y 67 - # CONFIG_XTENSA_UNALIGNED_USER is not set 68 - # CONFIG_PREEMPT is not set 69 - # CONFIG_HIGHMEM is not set 70 - 71 - # 72 - # Platform options 73 - # 74 - # CONFIG_XTENSA_PLATFORM_ISS is not set 75 6 CONFIG_XTENSA_PLATFORM_XT2000=y 76 - CONFIG_XTENSA_CALIBRATE_CCOUNT=y 77 7 CONFIG_GENERIC_CALIBRATE_DELAY=y 78 8 CONFIG_CMDLINE_BOOL=y 79 - CONFIG_CMDLINE="console=ttyS0,38400 ip=bootp root=nfs nfsroot=/opt/montavista/pro/devkit/xtensa/linux_be/target" 80 - 81 - # 82 - # Bus options 83 - # 84 - CONFIG_PCI=y 85 - # CONFIG_PCI_LEGACY_PROC is not set 86 - # CONFIG_PCI_NAMES is not set 87 - 88 - # 89 - # PCCARD (PCMCIA/CardBus) support 90 - # 91 - # CONFIG_PCCARD is not set 92 - 93 - # 94 - # PC-card bridges 95 - # 96 - 97 - # 98 - # PCI Hotplug Support 99 - # 100 - # CONFIG_HOTPLUG_PCI is not set 101 - 102 - # 103 - # Exectuable file formats 104 - # 105 - CONFIG_KCORE_ELF=y 106 - CONFIG_BINFMT_ELF=y 9 + CONFIG_CMDLINE="console=ttyS0,38400 ip=bootp root=nfs nfsroot=/opt/montavista/pro/devkit/xtensa/linux_be/target memmap=128M@0" 107 10 CONFIG_BINFMT_MISC=y 108 - 109 - # 110 - # Device Drivers 111 - # 112 - 113 - # 114 - # Generic Driver Options 115 - # 116 - CONFIG_STANDALONE=y 117 - CONFIG_PREVENT_FIRMWARE_BUILD=y 118 - # CONFIG_FW_LOADER is not set 119 - # CONFIG_DEBUG_DRIVER is not set 120 - 121 - # 122 - # Memory Technology Devices (MTD) 123 - # 124 - # CONFIG_MTD is not set 125 - 126 - # 127 - # Parallel port support 128 - # 129 - # CONFIG_PARPORT is not set 130 - 131 - # 132 - # Plug and Play support 133 - # 134 - 135 - # 136 - # Block devices 137 - # 138 - # CONFIG_BLK_DEV_FD is not set 139 - # CONFIG_BLK_CPQ_DA is not set 140 - # CONFIG_BLK_CPQ_CISS_DA is not set 141 - # CONFIG_BLK_DEV_DAC960 is not set 142 - # CONFIG_BLK_DEV_UMEM is not set 143 - # CONFIG_BLK_DEV_COW_COMMON is not set 144 - # CONFIG_BLK_DEV_LOOP is not set 145 - # CONFIG_BLK_DEV_NBD is not set 146 - # CONFIG_BLK_DEV_SX8 is not set 147 - # CONFIG_BLK_DEV_RAM is not set 148 - CONFIG_BLK_DEV_RAM_COUNT=16 149 - CONFIG_INITRAMFS_SOURCE="" 150 - # CONFIG_CDROM_PKTCDVD is not set 151 - 152 - # 153 - # IO Schedulers 154 - # 155 - CONFIG_IOSCHED_NOOP=y 156 - CONFIG_IOSCHED_AS=y 157 - CONFIG_IOSCHED_DEADLINE=y 158 - CONFIG_IOSCHED_CFQ=y 159 - # CONFIG_ATA_OVER_ETH is not set 160 - 161 - # 162 - # ATA/ATAPI/MFM/RLL support 163 - # 164 - # CONFIG_IDE is not set 165 - 166 - # 167 - # SCSI device support 168 - # 169 - # CONFIG_SCSI is not set 170 - 171 - # 172 - # Multi-device support (RAID and LVM) 173 - # 174 - # CONFIG_MD is not set 175 - 176 - # 177 - # Fusion MPT device support 178 - # 179 - 180 - # 181 - # IEEE 1394 (FireWire) support 182 - # 183 - # CONFIG_IEEE1394 is not set 184 - 185 - # 186 - # I2O device support 187 - # 188 - # CONFIG_I2O is not set 189 - 190 - # 191 - # Networking support 192 - # 193 11 CONFIG_NET=y 194 - 195 - # 196 - # Networking options 197 - # 198 - # CONFIG_PACKET is not set 199 - # CONFIG_NETLINK_DEV is not set 200 12 CONFIG_UNIX=y 201 - # CONFIG_NET_KEY is not set 202 13 CONFIG_INET=y 203 14 CONFIG_IP_MULTICAST=y 204 15 CONFIG_IP_ADVANCED_ROUTER=y ··· 20 209 CONFIG_IP_PNP_DHCP=y 21 210 CONFIG_IP_PNP_BOOTP=y 22 211 CONFIG_IP_PNP_RARP=y 23 - # CONFIG_NET_IPIP is not set 24 - # CONFIG_NET_IPGRE is not set 25 - # CONFIG_IP_MROUTE is not set 26 - # CONFIG_ARPD is not set 27 - # CONFIG_SYN_COOKIES is not set 28 - # CONFIG_INET_AH is not set 29 - # CONFIG_INET_ESP is not set 30 - # CONFIG_INET_IPCOMP is not set 31 - # CONFIG_INET_TUNNEL is not set 32 - # CONFIG_IP_TCPDIAG is not set 33 - # CONFIG_IP_TCPDIAG_IPV6 is not set 34 212 # CONFIG_IPV6 is not set 35 - # CONFIG_NETFILTER is not set 36 - 37 - # 38 - # SCTP Configuration (EXPERIMENTAL) 39 - # 40 - # CONFIG_IP_SCTP is not set 41 - # CONFIG_ATM is not set 42 - # CONFIG_BRIDGE is not set 43 - # CONFIG_VLAN_8021Q is not set 44 - # CONFIG_DECNET is not set 45 - # CONFIG_LLC2 is not set 46 - # CONFIG_IPX is not set 47 - # CONFIG_ATALK is not set 48 - # CONFIG_X25 is not set 49 - # CONFIG_LAPB is not set 50 - # CONFIG_NET_DIVERT is not set 51 - # CONFIG_ECONET is not set 52 - # CONFIG_WAN_ROUTER is not set 53 - 54 - # 55 - # QoS and/or fair queueing 56 - # 57 213 CONFIG_NET_SCHED=y 58 - CONFIG_NET_SCH_CLK_JIFFIES=y 59 - # CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set 60 - # CONFIG_NET_SCH_CLK_CPU is not set 61 214 CONFIG_NET_SCH_CBQ=m 62 215 CONFIG_NET_SCH_HTB=m 63 - # CONFIG_NET_SCH_HFSC is not set 64 216 CONFIG_NET_SCH_PRIO=m 65 217 CONFIG_NET_SCH_RED=m 66 218 CONFIG_NET_SCH_SFQ=m ··· 31 257 CONFIG_NET_SCH_TBF=m 32 258 CONFIG_NET_SCH_GRED=m 33 259 CONFIG_NET_SCH_DSMARK=m 34 - # CONFIG_NET_SCH_NETEM is not set 35 - CONFIG_NET_SCH_INGRESS=m 36 - CONFIG_NET_QOS=y 37 - CONFIG_NET_ESTIMATOR=y 38 - CONFIG_NET_CLS=y 39 260 CONFIG_NET_CLS_TCINDEX=m 40 261 CONFIG_NET_CLS_ROUTE4=m 41 - CONFIG_NET_CLS_ROUTE=y 42 262 CONFIG_NET_CLS_FW=m 43 263 CONFIG_NET_CLS_U32=m 44 - # CONFIG_CLS_U32_PERF is not set 45 - # CONFIG_NET_CLS_IND is not set 46 264 CONFIG_NET_CLS_RSVP=m 47 265 CONFIG_NET_CLS_RSVP6=m 48 - # CONFIG_NET_CLS_ACT is not set 49 - CONFIG_NET_CLS_POLICE=y 50 - 51 - # 52 - # Network testing 53 - # 54 - # CONFIG_NET_PKTGEN is not set 55 - # CONFIG_NETPOLL is not set 56 - # CONFIG_NET_POLL_CONTROLLER is not set 57 - # CONFIG_HAMRADIO is not set 58 - # CONFIG_IRDA is not set 59 - # CONFIG_BT is not set 60 266 CONFIG_NETDEVICES=y 61 267 CONFIG_DUMMY=y 62 - # CONFIG_BONDING is not set 63 - # CONFIG_EQUALIZER is not set 64 - # CONFIG_TUN is not set 65 - 66 - # 67 - # ARCnet devices 68 - # 69 - # CONFIG_ARCNET is not set 70 - 71 - # 72 - # Ethernet (10 or 100Mbit) 73 - # 74 - CONFIG_NET_ETHERNET=y 75 - # CONFIG_MII is not set 76 - CONFIG_XT2000_SONIC=y 77 - # CONFIG_HAPPYMEAL is not set 78 - # CONFIG_SUNGEM is not set 79 268 # CONFIG_NET_VENDOR_3COM is not set 80 - 81 - # 82 - # Tulip family network device support 83 - # 84 - # CONFIG_NET_TULIP is not set 85 - # CONFIG_HP100 is not set 86 - # CONFIG_NET_PCI is not set 87 - 88 - # 89 - # Ethernet (1000 Mbit) 90 - # 91 - # CONFIG_ACENIC is not set 92 - # CONFIG_DL2K is not set 93 - # CONFIG_E1000 is not set 94 - # CONFIG_NS83820 is not set 95 - # CONFIG_HAMACHI is not set 96 - # CONFIG_YELLOWFIN is not set 97 - # CONFIG_R8169 is not set 98 - # CONFIG_SK98LIN is not set 99 - # CONFIG_TIGON3 is not set 100 - 101 - # 102 - # Ethernet (10000 Mbit) 103 - # 104 - # CONFIG_IXGB is not set 105 - # CONFIG_S2IO is not set 106 - 107 - # 108 - # Wireless LAN (non-hamradio) 109 - # 110 - CONFIG_NET_RADIO=y 111 - 112 - # 113 - # Obsolete Wireless cards support (pre-802.11) 114 - # 115 - CONFIG_STRIP=m 116 - 117 - # 118 - # Wireless 802.11b ISA/PCI cards support 119 - # 120 - CONFIG_HERMES=m 121 - # CONFIG_PLX_HERMES is not set 122 - # CONFIG_TMD_HERMES is not set 123 - # CONFIG_PCI_HERMES is not set 124 - # CONFIG_ATMEL is not set 125 - 126 - # 127 - # Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support 128 - # 129 - # CONFIG_PRISM54 is not set 130 - CONFIG_NET_WIRELESS=y 131 - 132 - # 133 - # Wan interfaces 134 - # 135 - # CONFIG_WAN is not set 136 - # CONFIG_FDDI is not set 137 - # CONFIG_HIPPI is not set 138 - # CONFIG_PPP is not set 139 - # CONFIG_SLIP is not set 140 - # CONFIG_SHAPER is not set 141 - # CONFIG_NETCONSOLE is not set 142 - 143 - # 144 - # ISDN subsystem 145 - # 146 - # CONFIG_ISDN is not set 147 - 148 - # 149 - # Telephony Support 150 - # 151 - # CONFIG_PHONE is not set 152 - 153 - # 154 - # Input device support 155 - # 156 - CONFIG_INPUT=y 157 - 158 - # 159 - # Userland interfaces 160 - # 161 - CONFIG_INPUT_MOUSEDEV=y 162 269 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 163 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 164 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 165 - # CONFIG_INPUT_JOYDEV is not set 166 - # CONFIG_INPUT_TSDEV is not set 167 - # CONFIG_INPUT_EVDEV is not set 168 - # CONFIG_INPUT_EVBUG is not set 169 - 170 - # 171 - # Input I/O drivers 172 - # 173 - # CONFIG_GAMEPORT is not set 174 - CONFIG_SOUND_GAMEPORT=y 175 - CONFIG_SERIO=y 176 - # CONFIG_SERIO_I8042 is not set 177 - # CONFIG_SERIO_SERPORT is not set 178 - # CONFIG_SERIO_CT82C710 is not set 179 - # CONFIG_SERIO_PCIPS2 is not set 180 - # CONFIG_SERIO_RAW is not set 181 - 182 - # 183 - # Input Device Drivers 184 - # 185 270 # CONFIG_INPUT_KEYBOARD is not set 186 271 # CONFIG_INPUT_MOUSE is not set 187 - # CONFIG_INPUT_JOYSTICK is not set 188 - # CONFIG_INPUT_TOUCHSCREEN is not set 189 - # CONFIG_INPUT_MISC is not set 190 - 191 - # 192 - # Character devices 193 - # 194 - CONFIG_VT=y 195 - CONFIG_VT_CONSOLE=y 196 - CONFIG_HW_CONSOLE=y 197 - # CONFIG_SERIAL_NONSTANDARD is not set 198 - 199 - # 200 - # Serial drivers 201 - # 272 + # CONFIG_SERIO_SERPORT is not set 202 273 CONFIG_SERIAL_8250=y 203 274 CONFIG_SERIAL_8250_CONSOLE=y 204 - CONFIG_SERIAL_8250_NR_UARTS=4 205 - # CONFIG_SERIAL_8250_EXTENDED is not set 206 - 207 - # 208 - # Non-8250 serial port support 209 - # 210 - CONFIG_SERIAL_CORE=y 211 - CONFIG_SERIAL_CORE_CONSOLE=y 212 - CONFIG_UNIX98_PTYS=y 213 - CONFIG_LEGACY_PTYS=y 214 - CONFIG_LEGACY_PTY_COUNT=256 215 - 216 - # 217 - # IPMI 218 - # 219 - # CONFIG_IPMI_HANDLER is not set 220 - 221 - # 222 - # Watchdog Cards 223 - # 224 - # CONFIG_WATCHDOG is not set 225 - # CONFIG_RTC is not set 226 - # CONFIG_GEN_RTC is not set 227 - # CONFIG_DTLK is not set 228 - # CONFIG_R3964 is not set 229 - # CONFIG_APPLICOM is not set 230 - 231 - # 232 - # Ftape, the floppy tape device driver 233 - # 234 - # CONFIG_DRM is not set 235 - # CONFIG_RAW_DRIVER is not set 236 - 237 - # 238 - # I2C support 239 - # 240 - # CONFIG_I2C is not set 241 - 242 - # 243 - # Dallas's 1-wire bus 244 - # 245 - # CONFIG_W1 is not set 246 - 247 - # 248 - # Misc devices 249 - # 250 - 251 - # 252 - # Multimedia devices 253 - # 254 - # CONFIG_VIDEO_DEV is not set 255 - 256 - # 257 - # Digital Video Broadcasting Devices 258 - # 259 - # CONFIG_DVB is not set 260 - 261 - # 262 - # Graphics support 263 - # 264 - # CONFIG_FB is not set 265 - 266 - # 267 - # Console display driver support 268 - # 269 275 # CONFIG_VGA_CONSOLE is not set 270 - CONFIG_DUMMY_CONSOLE=y 271 - # CONFIG_BACKLIGHT_LCD_SUPPORT is not set 272 - 273 - # 274 - # Sound 275 - # 276 - # CONFIG_SOUND is not set 277 - 278 - # 279 - # USB support 280 - # 281 - # CONFIG_USB is not set 282 - CONFIG_USB_ARCH_HAS_HCD=y 283 - CONFIG_USB_ARCH_HAS_OHCI=y 284 - 285 - # 286 - # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information 287 - # 288 - 289 - # 290 - # USB Gadget Support 291 - # 292 - # CONFIG_USB_GADGET is not set 293 - 294 - # 295 - # MMC/SD Card support 296 - # 297 - # CONFIG_MMC is not set 298 - 299 - # 300 - # InfiniBand support 301 - # 302 - # CONFIG_INFINIBAND is not set 303 - 304 - # 305 - # File systems 306 - # 307 - # CONFIG_EXT2_FS is not set 308 - # CONFIG_EXT3_FS is not set 309 - # CONFIG_JBD is not set 310 - # CONFIG_REISERFS_FS is not set 311 - # CONFIG_JFS_FS is not set 312 - # CONFIG_XFS_FS is not set 313 - # CONFIG_MINIX_FS is not set 314 - # CONFIG_ROMFS_FS is not set 315 - # CONFIG_QUOTA is not set 316 - CONFIG_DNOTIFY=y 317 - # CONFIG_AUTOFS_FS is not set 318 - # CONFIG_AUTOFS4_FS is not set 319 - 320 - # 321 - # CD-ROM/DVD Filesystems 322 - # 323 - # CONFIG_ISO9660_FS is not set 324 - # CONFIG_UDF_FS is not set 325 - 326 - # 327 - # DOS/FAT/NT Filesystems 328 - # 329 - # CONFIG_MSDOS_FS is not set 330 - # CONFIG_VFAT_FS is not set 331 - # CONFIG_NTFS_FS is not set 332 - 333 - # 334 - # Pseudo filesystems 335 - # 336 - CONFIG_PROC_FS=y 337 - # CONFIG_PROC_KCORE is not set 338 - CONFIG_SYSFS=y 339 - CONFIG_DEVFS_FS=y 340 - # CONFIG_DEVFS_MOUNT is not set 341 - # CONFIG_DEVFS_DEBUG is not set 342 - # CONFIG_DEVPTS_FS_XATTR is not set 343 - # CONFIG_TMPFS is not set 344 - # CONFIG_HUGETLB_PAGE is not set 345 - CONFIG_RAMFS=y 346 - 347 - # 348 - # Miscellaneous filesystems 349 - # 350 - # CONFIG_ADFS_FS is not set 351 - # CONFIG_AFFS_FS is not set 352 - # CONFIG_HFS_FS is not set 353 - # CONFIG_HFSPLUS_FS is not set 354 - # CONFIG_BEFS_FS is not set 355 - # CONFIG_BFS_FS is not set 356 - # CONFIG_EFS_FS is not set 357 - # CONFIG_CRAMFS is not set 358 - # CONFIG_VXFS_FS is not set 359 - # CONFIG_HPFS_FS is not set 360 - # CONFIG_QNX4FS_FS is not set 361 - # CONFIG_SYSV_FS is not set 362 - # CONFIG_UFS_FS is not set 363 - 364 - # 365 - # Network File Systems 366 - # 367 276 CONFIG_NFS_FS=y 368 - CONFIG_NFS_V3=y 369 - # CONFIG_NFS_V4 is not set 370 - # CONFIG_NFS_DIRECTIO is not set 371 - # CONFIG_NFSD is not set 372 277 CONFIG_ROOT_NFS=y 373 - CONFIG_LOCKD=y 374 - CONFIG_LOCKD_V4=y 375 - # CONFIG_EXPORTFS is not set 376 - CONFIG_SUNRPC=y 377 - # CONFIG_RPCSEC_GSS_KRB5 is not set 378 - # CONFIG_RPCSEC_GSS_SPKM3 is not set 379 - # CONFIG_SMB_FS is not set 380 - # CONFIG_CIFS is not set 381 - # CONFIG_NCP_FS is not set 382 - # CONFIG_CODA_FS is not set 383 - # CONFIG_AFS_FS is not set 384 - 385 - # 386 - # Partition Types 387 - # 388 - # CONFIG_PARTITION_ADVANCED is not set 389 - CONFIG_MSDOS_PARTITION=y 390 - 391 - # 392 - # Native Language Support 393 - # 394 - # CONFIG_NLS is not set 395 - 396 - # 397 - # Kernel hacking 398 - # 399 - CONFIG_DEBUG_KERNEL=y 400 - # CONFIG_DEBUG_STACKOVERFLOW is not set 401 - # CONFIG_DEBUG_SLAB is not set 278 + # CONFIG_FRAME_POINTER is not set 402 279 CONFIG_MAGIC_SYSRQ=y 403 - # CONFIG_DEBUG_SPINLOCK is not set 404 - # CONFIG_DEBUG_PAGEALLOC is not set 405 - # CONFIG_DEBUG_INFO is not set 406 - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 407 - # CONFIG_KGDB is not set 408 - 409 - # 410 - # Security options 411 - # 412 - # CONFIG_KEYS is not set 413 - # CONFIG_SECURITY is not set 414 - 415 - # 416 - # Cryptographic options 417 - # 418 - # CONFIG_CRYPTO is not set 419 - 420 - # 421 - # Hardware crypto devices 422 - # 423 - 424 - # 425 - # Library routines 426 - # 427 - # CONFIG_CRC_CCITT is not set 428 - # CONFIG_CRC32 is not set 429 - # CONFIG_LIBCRC32C is not set 280 + CONFIG_DEBUG_KERNEL=y
+1 -1
arch/xtensa/configs/generic_kc705_defconfig
··· 32 32 # CONFIG_PCI is not set 33 33 CONFIG_XTENSA_PLATFORM_XTFPGA=y 34 34 CONFIG_CMDLINE_BOOL=y 35 - CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug" 35 + CONFIG_CMDLINE="earlycon=uart8250,mmio32native,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=0x38000000@0" 36 36 CONFIG_USE_OF=y 37 37 CONFIG_BUILTIN_DTB="kc705" 38 38 # CONFIG_COMPACTION is not set
+2 -726
arch/xtensa/configs/iss_defconfig
··· 1 - # 2 - # Automatically generated make config: don't edit 3 - # Linux kernel version: 2.6.34-rc6 4 - # Tue Aug 3 00:10:54 2010 5 - # 6 - # CONFIG_FRAME_POINTER is not set 7 - CONFIG_ZONE_DMA=y 8 - CONFIG_XTENSA=y 9 - CONFIG_RWSEM_XCHGADD_ALGORITHM=y 10 - CONFIG_GENERIC_FIND_NEXT_BIT=y 11 - CONFIG_GENERIC_HWEIGHT=y 12 - # CONFIG_ARCH_HAS_ILOG2_U32 is not set 13 - # CONFIG_ARCH_HAS_ILOG2_U64 is not set 14 - CONFIG_NO_IOPORT_MAP=y 15 - CONFIG_HZ=100 16 - CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 17 - CONFIG_CONSTRUCTORS=y 18 - 19 - # 20 - # General setup 21 - # 22 - CONFIG_EXPERIMENTAL=y 23 - CONFIG_BROKEN_ON_SMP=y 24 - CONFIG_INIT_ENV_ARG_LIMIT=32 25 - CONFIG_LOCALVERSION="" 26 - CONFIG_LOCALVERSION_AUTO=y 27 - CONFIG_SWAP=y 28 1 CONFIG_SYSVIPC=y 29 - CONFIG_SYSVIPC_SYSCTL=y 30 - # CONFIG_POSIX_MQUEUE is not set 31 - # CONFIG_BSD_PROCESS_ACCT is not set 32 - # CONFIG_TASKSTATS is not set 33 - # CONFIG_AUDIT is not set 34 - 35 - # 36 - # RCU Subsystem 37 - # 38 - CONFIG_TREE_RCU=y 39 - # CONFIG_TREE_PREEMPT_RCU is not set 40 - # CONFIG_TINY_RCU is not set 41 - # CONFIG_RCU_TRACE is not set 42 - CONFIG_RCU_FANOUT=32 43 - # CONFIG_RCU_FANOUT_EXACT is not set 44 - # CONFIG_TREE_RCU_TRACE is not set 45 - # CONFIG_IKCONFIG is not set 46 2 CONFIG_LOG_BUF_SHIFT=14 47 - # CONFIG_CGROUPS is not set 48 - # CONFIG_SYSFS_DEPRECATED_V2 is not set 49 - # CONFIG_RELAY is not set 50 - # CONFIG_NAMESPACES is not set 51 - # CONFIG_BLK_DEV_INITRD is not set 52 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 53 - CONFIG_SYSCTL=y 54 - CONFIG_ANON_INODES=y 55 3 CONFIG_EXPERT=y 56 4 CONFIG_SYSCTL_SYSCALL=y 57 - CONFIG_KALLSYMS=y 58 - # CONFIG_KALLSYMS_ALL is not set 59 - # CONFIG_KALLSYMS_EXTRA_PASS is not set 60 - # CONFIG_HOTPLUG is not set 61 - CONFIG_PRINTK=y 62 - CONFIG_BUG=y 63 - CONFIG_ELF_CORE=y 64 - CONFIG_BASE_FULL=y 65 - CONFIG_FUTEX=y 66 - CONFIG_EPOLL=y 67 - CONFIG_SIGNALFD=y 68 - CONFIG_TIMERFD=y 69 - CONFIG_EVENTFD=y 70 - CONFIG_SHMEM=y 71 - CONFIG_AIO=y 72 - 73 - # 74 - # Kernel Performance Events And Counters 75 - # 76 - CONFIG_VM_EVENT_COUNTERS=y 77 - CONFIG_SLUB_DEBUG=y 78 - CONFIG_COMPAT_BRK=y 79 - # CONFIG_SLAB is not set 80 - CONFIG_SLUB=y 81 - # CONFIG_SLOB is not set 82 - # CONFIG_PROFILING is not set 83 - 84 - # 85 - # GCOV-based kernel profiling 86 - # 87 - # CONFIG_SLOW_WORK is not set 88 - # CONFIG_HAVE_GENERIC_DMA_COHERENT is not set 89 - CONFIG_SLABINFO=y 90 - CONFIG_RT_MUTEXES=y 91 - CONFIG_BASE_SMALL=0 92 - # CONFIG_MODULES is not set 93 - CONFIG_BLOCK=y 94 - CONFIG_LBDAF=y 95 - CONFIG_BLK_DEV_BSG=y 96 - # CONFIG_BLK_DEV_INTEGRITY is not set 97 - 98 - # 99 - # IO Schedulers 100 - # 101 - CONFIG_IOSCHED_NOOP=y 102 5 # CONFIG_IOSCHED_DEADLINE is not set 103 6 # CONFIG_IOSCHED_CFQ is not set 104 - # CONFIG_DEFAULT_DEADLINE is not set 105 - # CONFIG_DEFAULT_CFQ is not set 106 - CONFIG_DEFAULT_NOOP=y 107 - CONFIG_DEFAULT_IOSCHED="noop" 108 - # CONFIG_INLINE_SPIN_TRYLOCK is not set 109 - # CONFIG_INLINE_SPIN_TRYLOCK_BH is not set 110 - # CONFIG_INLINE_SPIN_LOCK is not set 111 - # CONFIG_INLINE_SPIN_LOCK_BH is not set 112 - # CONFIG_INLINE_SPIN_LOCK_IRQ is not set 113 - # CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set 114 - # CONFIG_UNINLINE_SPIN_UNLOCK is not set 115 - # CONFIG_INLINE_SPIN_UNLOCK_BH is not set 116 - CONFIG_INLINE_SPIN_UNLOCK_IRQ=y 117 - # CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set 118 - # CONFIG_INLINE_READ_TRYLOCK is not set 119 - # CONFIG_INLINE_READ_LOCK is not set 120 - # CONFIG_INLINE_READ_LOCK_BH is not set 121 - # CONFIG_INLINE_READ_LOCK_IRQ is not set 122 - # CONFIG_INLINE_READ_LOCK_IRQSAVE is not set 123 - CONFIG_INLINE_READ_UNLOCK=y 124 - # CONFIG_INLINE_READ_UNLOCK_BH is not set 125 - CONFIG_INLINE_READ_UNLOCK_IRQ=y 126 - # CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set 127 - # CONFIG_INLINE_WRITE_TRYLOCK is not set 128 - # CONFIG_INLINE_WRITE_LOCK is not set 129 - # CONFIG_INLINE_WRITE_LOCK_BH is not set 130 - # CONFIG_INLINE_WRITE_LOCK_IRQ is not set 131 - # CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set 132 - CONFIG_INLINE_WRITE_UNLOCK=y 133 - # CONFIG_INLINE_WRITE_UNLOCK_BH is not set 134 - CONFIG_INLINE_WRITE_UNLOCK_IRQ=y 135 - # CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set 136 - # CONFIG_MUTEX_SPIN_ON_OWNER is not set 137 - # CONFIG_FREEZER is not set 138 - CONFIG_MMU=y 139 - # CONFIG_VARIANT_IRQ_SWITCH is not set 140 - 141 - # 142 - # Processor type and features 143 - # 144 - CONFIG_XTENSA_VARIANT_FSF=y 145 - # CONFIG_XTENSA_VARIANT_DC232B is not set 146 - # CONFIG_XTENSA_UNALIGNED_USER is not set 147 - # CONFIG_PREEMPT is not set 148 - CONFIG_XTENSA_CALIBRATE_CCOUNT=y 149 - CONFIG_SERIAL_CONSOLE=y 150 - CONFIG_XTENSA_ISS_NETWORK=y 151 - 152 - # 153 - # Bus options 154 - # 155 7 # CONFIG_PCI is not set 156 - # CONFIG_ARCH_SUPPORTS_MSI is not set 157 - 158 - # 159 - # Platform options 160 - # 161 - CONFIG_XTENSA_PLATFORM_ISS=y 162 - # CONFIG_XTENSA_PLATFORM_XT2000 is not set 163 - # CONFIG_GENERIC_CALIBRATE_DELAY is not set 164 8 CONFIG_CMDLINE_BOOL=y 165 - CONFIG_CMDLINE="console=ttyS0,38400 eth0=tuntap,,tap0 ip=192.168.168.5:192.168.168.1 root=nfs nfsroot=192.168.168.1:/opt/montavista/pro/devkit/xtensa/linux_be/target" 166 - CONFIG_SELECT_MEMORY_MODEL=y 167 - CONFIG_FLATMEM_MANUAL=y 168 - # CONFIG_DISCONTIGMEM_MANUAL is not set 169 - # CONFIG_SPARSEMEM_MANUAL is not set 170 - CONFIG_FLATMEM=y 171 - CONFIG_FLAT_NODE_MEM_MAP=y 172 - CONFIG_SPLIT_PTLOCK_CPUS=4 173 - # CONFIG_PHYS_ADDR_T_64BIT is not set 174 - CONFIG_ZONE_DMA_FLAG=1 175 - CONFIG_BOUNCE=y 176 - CONFIG_VIRT_TO_BUS=y 177 - # CONFIG_KSM is not set 178 - CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 179 - 180 - # 181 - # Executable file formats 182 - # 183 - CONFIG_KCORE_ELF=y 184 - CONFIG_BINFMT_ELF=y 9 + CONFIG_CMDLINE="console=ttyS0,38400 eth0=tuntap,,tap0 ip=192.168.168.5:192.168.168.1 root=nfs nfsroot=192.168.168.1:/opt/montavista/pro/devkit/xtensa/linux_be/target memmap=128M@0" 185 10 # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 186 - # CONFIG_HAVE_AOUT is not set 187 - # CONFIG_BINFMT_MISC is not set 188 11 CONFIG_NET=y 189 - 190 - # 191 - # Networking options 192 - # 193 12 CONFIG_PACKET=y 194 13 CONFIG_UNIX=y 195 - CONFIG_XFRM=y 196 - # CONFIG_XFRM_USER is not set 197 - # CONFIG_XFRM_SUB_POLICY is not set 198 - # CONFIG_XFRM_MIGRATE is not set 199 - # CONFIG_XFRM_STATISTICS is not set 200 - # CONFIG_NET_KEY is not set 201 14 CONFIG_INET=y 202 - # CONFIG_IP_MULTICAST is not set 203 - # CONFIG_IP_ADVANCED_ROUTER is not set 204 - CONFIG_IP_FIB_HASH=y 205 15 CONFIG_IP_PNP=y 206 16 CONFIG_IP_PNP_DHCP=y 207 17 CONFIG_IP_PNP_BOOTP=y 208 18 CONFIG_IP_PNP_RARP=y 209 - # CONFIG_NET_IPIP is not set 210 - # CONFIG_NET_IPGRE is not set 211 - # CONFIG_ARPD is not set 212 - # CONFIG_SYN_COOKIES is not set 213 - # CONFIG_INET_AH is not set 214 - # CONFIG_INET_ESP is not set 215 - # CONFIG_INET_IPCOMP is not set 216 - # CONFIG_INET_XFRM_TUNNEL is not set 217 - # CONFIG_INET_TUNNEL is not set 218 - CONFIG_INET_XFRM_MODE_TRANSPORT=y 219 - CONFIG_INET_XFRM_MODE_TUNNEL=y 220 - CONFIG_INET_XFRM_MODE_BEET=y 221 - CONFIG_INET_LRO=y 222 - CONFIG_INET_DIAG=y 223 - CONFIG_INET_TCP_DIAG=y 224 - # CONFIG_TCP_CONG_ADVANCED is not set 225 - CONFIG_TCP_CONG_CUBIC=y 226 - CONFIG_DEFAULT_TCP_CONG="cubic" 227 - # CONFIG_TCP_MD5SIG is not set 228 19 # CONFIG_IPV6 is not set 229 - # CONFIG_NETWORK_SECMARK is not set 230 - # CONFIG_NETFILTER is not set 231 - # CONFIG_IP_DCCP is not set 232 - # CONFIG_IP_SCTP is not set 233 - # CONFIG_RDS is not set 234 - # CONFIG_TIPC is not set 235 - # CONFIG_ATM is not set 236 - # CONFIG_BRIDGE is not set 237 - # CONFIG_NET_DSA is not set 238 - # CONFIG_VLAN_8021Q is not set 239 - # CONFIG_DECNET is not set 240 - # CONFIG_LLC2 is not set 241 - # CONFIG_IPX is not set 242 - # CONFIG_ATALK is not set 243 - # CONFIG_X25 is not set 244 - # CONFIG_LAPB is not set 245 - # CONFIG_ECONET is not set 246 - # CONFIG_WAN_ROUTER is not set 247 - # CONFIG_PHONET is not set 248 - # CONFIG_IEEE802154 is not set 249 - # CONFIG_NET_SCHED is not set 250 - # CONFIG_DCB is not set 251 - 252 - # 253 - # Network testing 254 - # 255 - # CONFIG_NET_PKTGEN is not set 256 - # CONFIG_HAMRADIO is not set 257 - # CONFIG_CAN is not set 258 - # CONFIG_IRDA is not set 259 - # CONFIG_BT is not set 260 - # CONFIG_AF_RXRPC is not set 261 - CONFIG_WIRELESS=y 262 - # CONFIG_CFG80211 is not set 263 - # CONFIG_LIB80211 is not set 264 - 265 - # 266 - # CFG80211 needs to be enabled for MAC80211 267 - # 268 - # CONFIG_WIMAX is not set 269 - # CONFIG_RFKILL is not set 270 - # CONFIG_NET_9P is not set 271 - 272 - # 273 - # Device Drivers 274 - # 275 - 276 - # 277 - # Generic Driver Options 278 - # 279 20 # CONFIG_STANDALONE is not set 280 - CONFIG_PREVENT_FIRMWARE_BUILD=y 281 - # CONFIG_DEBUG_DRIVER is not set 282 - # CONFIG_DEBUG_DEVRES is not set 283 - # CONFIG_SYS_HYPERVISOR is not set 284 - # CONFIG_CONNECTOR is not set 285 - # CONFIG_MTD is not set 286 - # CONFIG_PARPORT is not set 287 - CONFIG_BLK_DEV=y 288 - # CONFIG_BLK_DEV_COW_COMMON is not set 289 - # CONFIG_BLK_DEV_LOOP is not set 290 - 291 - # 292 - # DRBD disabled because PROC_FS, INET or CONNECTOR not selected 293 - # 294 - # CONFIG_BLK_DEV_NBD is not set 295 - # CONFIG_BLK_DEV_RAM is not set 296 - # CONFIG_CDROM_PKTCDVD is not set 297 - # CONFIG_ATA_OVER_ETH is not set 298 - # CONFIG_BLK_DEV_HD is not set 299 - CONFIG_MISC_DEVICES=y 300 - # CONFIG_ENCLOSURE_SERVICES is not set 301 - # CONFIG_C2PORT is not set 302 - 303 - # 304 - # EEPROM support 305 - # 306 - # CONFIG_EEPROM_93CX6 is not set 307 - # CONFIG_HAVE_IDE is not set 308 - # CONFIG_IDE is not set 309 - 310 - # 311 - # SCSI device support 312 - # 313 - CONFIG_SCSI_MOD=y 314 - # CONFIG_RAID_ATTRS is not set 315 - # CONFIG_SCSI is not set 316 - # CONFIG_SCSI_DMA is not set 317 - # CONFIG_SCSI_NETLINK is not set 318 - # CONFIG_ATA is not set 319 - # CONFIG_MD is not set 320 - # CONFIG_NETDEVICES is not set 321 - # CONFIG_ISDN is not set 322 - # CONFIG_PHONE is not set 323 - 324 - # 325 - # Input device support 326 - # 327 - CONFIG_INPUT=y 328 - # CONFIG_INPUT_FF_MEMLESS is not set 329 - # CONFIG_INPUT_POLLDEV is not set 330 - # CONFIG_INPUT_SPARSEKMAP is not set 331 - 332 - # 333 - # Userland interfaces 334 - # 335 21 # CONFIG_INPUT_MOUSEDEV is not set 336 - # CONFIG_INPUT_JOYDEV is not set 337 - # CONFIG_INPUT_EVDEV is not set 338 - # CONFIG_INPUT_EVBUG is not set 339 - 340 - # 341 - # Input Device Drivers 342 - # 343 22 # CONFIG_INPUT_KEYBOARD is not set 344 23 # CONFIG_INPUT_MOUSE is not set 345 - # CONFIG_INPUT_JOYSTICK is not set 346 - # CONFIG_INPUT_TABLET is not set 347 - # CONFIG_INPUT_TOUCHSCREEN is not set 348 - # CONFIG_INPUT_MISC is not set 349 - 350 - # 351 - # Hardware I/O ports 352 - # 353 24 # CONFIG_SERIO is not set 354 - # CONFIG_GAMEPORT is not set 355 - 356 - # 357 - # Character devices 358 - # 359 - CONFIG_VT=y 360 - CONFIG_CONSOLE_TRANSLATIONS=y 361 - CONFIG_VT_CONSOLE=y 362 - CONFIG_HW_CONSOLE=y 363 - # CONFIG_VT_HW_CONSOLE_BINDING is not set 364 - CONFIG_DEVKMEM=y 365 - # CONFIG_SERIAL_NONSTANDARD is not set 366 - 367 - # 368 - # Serial drivers 369 - # 370 - # CONFIG_SERIAL_8250 is not set 371 - 372 - # 373 - # Non-8250 serial port support 374 - # 375 - # CONFIG_SERIAL_TIMBERDALE is not set 376 - CONFIG_UNIX98_PTYS=y 377 - # CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set 378 - CONFIG_LEGACY_PTYS=y 379 - CONFIG_LEGACY_PTY_COUNT=256 380 - # CONFIG_IPMI_HANDLER is not set 381 - CONFIG_HW_RANDOM=y 382 - # CONFIG_HW_RANDOM_TIMERIOMEM is not set 383 - # CONFIG_RTC is not set 384 - # CONFIG_GEN_RTC is not set 385 - # CONFIG_R3964 is not set 386 - # CONFIG_RAW_DRIVER is not set 387 - # CONFIG_TCG_TPM is not set 388 - # CONFIG_I2C is not set 389 - # CONFIG_SPI is not set 390 - 391 - # 392 - # PPS support 393 - # 394 - # CONFIG_PPS is not set 395 - # CONFIG_W1 is not set 396 - # CONFIG_POWER_SUPPLY is not set 397 - CONFIG_HWMON=y 398 - # CONFIG_HWMON_VID is not set 399 - # CONFIG_HWMON_DEBUG_CHIP is not set 400 - 401 - # 402 - # Native drivers 403 - # 404 - # CONFIG_SENSORS_F71805F is not set 405 - # CONFIG_SENSORS_F71882FG is not set 406 - # CONFIG_SENSORS_IT87 is not set 407 - # CONFIG_SENSORS_PC87360 is not set 408 - # CONFIG_SENSORS_PC87427 is not set 409 - # CONFIG_SENSORS_SHT15 is not set 410 - # CONFIG_SENSORS_SMSC47M1 is not set 411 - # CONFIG_SENSORS_SMSC47B397 is not set 412 - # CONFIG_SENSORS_VT1211 is not set 413 - # CONFIG_SENSORS_W83627HF is not set 414 - # CONFIG_SENSORS_W83627EHF is not set 415 - # CONFIG_THERMAL is not set 416 25 CONFIG_WATCHDOG=y 417 26 CONFIG_WATCHDOG_NOWAYOUT=y 418 - 419 - # 420 - # Watchdog Device Drivers 421 - # 422 27 CONFIG_SOFT_WATCHDOG=y 423 - CONFIG_SSB_POSSIBLE=y 424 - 425 - # 426 - # Sonics Silicon Backplane 427 - # 428 - # CONFIG_SSB is not set 429 - 430 - # 431 - # Multifunction device drivers 432 - # 433 - # CONFIG_MFD_CORE is not set 434 - # CONFIG_MFD_SM501 is not set 435 - # CONFIG_HTC_PASIC3 is not set 436 - # CONFIG_MFD_TMIO is not set 437 - # CONFIG_REGULATOR is not set 438 - # CONFIG_MEDIA_SUPPORT is not set 439 - 440 - # 441 - # Graphics support 442 - # 443 - # CONFIG_VGASTATE is not set 444 - # CONFIG_VIDEO_OUTPUT_CONTROL is not set 445 - # CONFIG_FB is not set 446 - # CONFIG_BACKLIGHT_LCD_SUPPORT is not set 447 - 448 - # 449 - # Display device support 450 - # 451 - # CONFIG_DISPLAY_SUPPORT is not set 452 - 453 - # 454 - # Console display driver support 455 - # 456 28 # CONFIG_VGA_CONSOLE is not set 457 - CONFIG_DUMMY_CONSOLE=y 458 - # CONFIG_SOUND is not set 459 - CONFIG_HID_SUPPORT=y 460 - CONFIG_HID=y 461 - # CONFIG_HIDRAW is not set 462 - # CONFIG_HID_PID is not set 463 - 464 - # 465 - # Special HID drivers 466 - # 467 - CONFIG_USB_SUPPORT=y 468 - # CONFIG_USB_ARCH_HAS_HCD is not set 469 - # CONFIG_USB_ARCH_HAS_OHCI is not set 470 - # CONFIG_USB_ARCH_HAS_EHCI is not set 471 - # CONFIG_USB_OTG_WHITELIST is not set 472 - # CONFIG_USB_OTG_BLACKLIST_HUB is not set 473 - 474 - # 475 - # Enable Host or Gadget support to see Inventra options 476 - # 477 - 478 - # 479 - # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may 480 - # 481 - # CONFIG_USB_GADGET is not set 482 - 483 - # 484 - # OTG and related infrastructure 485 - # 486 - # CONFIG_MMC is not set 487 - # CONFIG_MEMSTICK is not set 488 - # CONFIG_NEW_LEDS is not set 489 - # CONFIG_ACCESSIBILITY is not set 490 - # CONFIG_RTC_CLASS is not set 491 - # CONFIG_DMADEVICES is not set 492 - # CONFIG_AUXDISPLAY is not set 493 - # CONFIG_UIO is not set 494 - 495 - # 496 - # TI VLYNQ 497 - # 498 - # CONFIG_STAGING is not set 499 - 500 - # 501 - # File systems 502 - # 503 - # CONFIG_EXT2_FS is not set 504 - # CONFIG_EXT3_FS is not set 505 - # CONFIG_EXT4_FS is not set 506 - # CONFIG_REISERFS_FS is not set 507 - # CONFIG_JFS_FS is not set 508 - # CONFIG_FS_POSIX_ACL is not set 509 - # CONFIG_XFS_FS is not set 510 - # CONFIG_GFS2_FS is not set 511 - # CONFIG_OCFS2_FS is not set 512 - # CONFIG_BTRFS_FS is not set 513 - # CONFIG_NILFS2_FS is not set 514 - CONFIG_FILE_LOCKING=y 515 - CONFIG_FSNOTIFY=y 516 29 # CONFIG_DNOTIFY is not set 517 - # CONFIG_INOTIFY is not set 518 - CONFIG_INOTIFY_USER=y 519 - # CONFIG_QUOTA is not set 520 - # CONFIG_AUTOFS_FS is not set 521 - # CONFIG_AUTOFS4_FS is not set 522 - # CONFIG_FUSE_FS is not set 523 - 524 - # 525 - # Caches 526 - # 527 - # CONFIG_FSCACHE is not set 528 - 529 - # 530 - # CD-ROM/DVD Filesystems 531 - # 532 - # CONFIG_ISO9660_FS is not set 533 - # CONFIG_UDF_FS is not set 534 - 535 - # 536 - # DOS/FAT/NT Filesystems 537 - # 538 - # CONFIG_MSDOS_FS is not set 539 - # CONFIG_VFAT_FS is not set 540 - # CONFIG_NTFS_FS is not set 541 - 542 - # 543 - # Pseudo filesystems 544 - # 545 - CONFIG_PROC_FS=y 546 30 CONFIG_PROC_KCORE=y 547 - CONFIG_PROC_SYSCTL=y 548 - CONFIG_PROC_PAGE_MONITOR=y 549 - CONFIG_SYSFS=y 550 31 CONFIG_TMPFS=y 551 - # CONFIG_TMPFS_POSIX_ACL is not set 552 - # CONFIG_HUGETLB_PAGE is not set 553 - # CONFIG_CONFIGFS_FS is not set 554 - CONFIG_MISC_FILESYSTEMS=y 555 - # CONFIG_ADFS_FS is not set 556 - # CONFIG_AFFS_FS is not set 557 - # CONFIG_HFS_FS is not set 558 - # CONFIG_HFSPLUS_FS is not set 559 - # CONFIG_BEFS_FS is not set 560 - # CONFIG_BFS_FS is not set 561 - # CONFIG_EFS_FS is not set 562 - # CONFIG_LOGFS is not set 563 - # CONFIG_CRAMFS is not set 564 - # CONFIG_SQUASHFS is not set 565 - # CONFIG_VXFS_FS is not set 566 - # CONFIG_MINIX_FS is not set 567 - # CONFIG_OMFS_FS is not set 568 - # CONFIG_HPFS_FS is not set 569 - # CONFIG_QNX4FS_FS is not set 570 - # CONFIG_ROMFS_FS is not set 571 - # CONFIG_SYSV_FS is not set 572 - # CONFIG_UFS_FS is not set 573 - CONFIG_NETWORK_FILESYSTEMS=y 574 - # CONFIG_NFS_FS is not set 575 - # CONFIG_NFSD is not set 576 - # CONFIG_SMB_FS is not set 577 - # CONFIG_CEPH_FS is not set 578 - # CONFIG_CIFS is not set 579 - # CONFIG_NCP_FS is not set 580 - # CONFIG_CODA_FS is not set 581 - # CONFIG_AFS_FS is not set 582 - 583 - # 584 - # Partition Types 585 - # 586 - # CONFIG_PARTITION_ADVANCED is not set 587 - CONFIG_MSDOS_PARTITION=y 588 - # CONFIG_NLS is not set 589 - # CONFIG_DLM is not set 590 - 591 - # 592 - # Kernel hacking 593 - # 594 - # CONFIG_PRINTK_TIME is not set 595 - CONFIG_ENABLE_WARN_DEPRECATED=y 596 - CONFIG_ENABLE_MUST_CHECK=y 597 - CONFIG_FRAME_WARN=1024 598 - # CONFIG_MAGIC_SYSRQ is not set 599 - # CONFIG_STRIP_ASM_SYMS is not set 600 - # CONFIG_UNUSED_SYMBOLS is not set 601 - # CONFIG_DEBUG_FS is not set 602 - # CONFIG_HEADERS_CHECK is not set 603 - CONFIG_DEBUG_KERNEL=y 604 - # CONFIG_DEBUG_SHIRQ is not set 605 - CONFIG_DETECT_SOFTLOCKUP=y 606 - # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set 607 - CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 32 + # CONFIG_FRAME_POINTER is not set 608 33 CONFIG_DETECT_HUNG_TASK=y 609 - # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set 610 - CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0 611 - CONFIG_SCHED_DEBUG=y 612 - # CONFIG_SCHEDSTATS is not set 613 - # CONFIG_TIMER_STATS is not set 614 - # CONFIG_DEBUG_OBJECTS is not set 615 - # CONFIG_SLUB_DEBUG_ON is not set 616 - # CONFIG_SLUB_STATS is not set 617 - # CONFIG_DEBUG_RT_MUTEXES is not set 618 - # CONFIG_DEBUG_SPINLOCK is not set 619 - # CONFIG_DEBUG_MUTEXES is not set 620 - # CONFIG_DEBUG_SPINLOCK_SLEEP is not set 621 - # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 622 - # CONFIG_DEBUG_KOBJECT is not set 623 - # CONFIG_DEBUG_INFO is not set 624 - # CONFIG_DEBUG_VM is not set 625 - # CONFIG_DEBUG_MEMORY_INIT is not set 626 - # CONFIG_DEBUG_LIST is not set 627 - # CONFIG_DEBUG_SG is not set 628 - # CONFIG_DEBUG_NOTIFIERS is not set 629 - # CONFIG_DEBUG_CREDENTIALS is not set 630 - # CONFIG_RCU_TORTURE_TEST is not set 631 - CONFIG_RCU_CPU_STALL_DETECTOR=y 632 - # CONFIG_BACKTRACE_SELF_TEST is not set 633 - # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set 634 - # CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set 635 - # CONFIG_FAULT_INJECTION is not set 636 - # CONFIG_SYSCTL_SYSCALL_CHECK is not set 637 - # CONFIG_PAGE_POISONING is not set 638 - # CONFIG_SAMPLES is not set 639 - 640 - # 641 - # Security options 642 - # 643 - # CONFIG_KEYS is not set 644 - # CONFIG_SECURITY is not set 645 - # CONFIG_SECURITYFS is not set 646 - # CONFIG_DEFAULT_SECURITY_SELINUX is not set 647 - # CONFIG_DEFAULT_SECURITY_SMACK is not set 648 - # CONFIG_DEFAULT_SECURITY_TOMOYO is not set 649 - CONFIG_DEFAULT_SECURITY_DAC=y 650 - CONFIG_DEFAULT_SECURITY="" 651 - CONFIG_CRYPTO=y 652 - 653 - # 654 - # Crypto core or helper 655 - # 656 - # CONFIG_CRYPTO_FIPS is not set 657 - CONFIG_CRYPTO_ALGAPI=y 658 - CONFIG_CRYPTO_ALGAPI2=y 659 - CONFIG_CRYPTO_RNG=y 660 - CONFIG_CRYPTO_RNG2=y 661 - # CONFIG_CRYPTO_MANAGER is not set 662 - # CONFIG_CRYPTO_MANAGER2 is not set 663 - # CONFIG_CRYPTO_GF128MUL is not set 664 - # CONFIG_CRYPTO_NULL is not set 665 - # CONFIG_CRYPTO_CRYPTD is not set 666 - # CONFIG_CRYPTO_AUTHENC is not set 667 - 668 - # 669 - # Authenticated Encryption with Associated Data 670 - # 671 - # CONFIG_CRYPTO_CCM is not set 672 - # CONFIG_CRYPTO_GCM is not set 673 - # CONFIG_CRYPTO_SEQIV is not set 674 - 675 - # 676 - # Block modes 677 - # 678 - # CONFIG_CRYPTO_CBC is not set 679 - # CONFIG_CRYPTO_CTR is not set 680 - # CONFIG_CRYPTO_CTS is not set 681 - # CONFIG_CRYPTO_ECB is not set 682 - # CONFIG_CRYPTO_LRW is not set 683 - # CONFIG_CRYPTO_PCBC is not set 684 - # CONFIG_CRYPTO_XTS is not set 685 - 686 - # 687 - # Hash modes 688 - # 689 - # CONFIG_CRYPTO_HMAC is not set 690 - # CONFIG_CRYPTO_XCBC is not set 691 - # CONFIG_CRYPTO_VMAC is not set 692 - 693 - # 694 - # Digest 695 - # 696 - # CONFIG_CRYPTO_CRC32C is not set 697 - # CONFIG_CRYPTO_GHASH is not set 698 - # CONFIG_CRYPTO_MD4 is not set 699 - # CONFIG_CRYPTO_MD5 is not set 700 - # CONFIG_CRYPTO_MICHAEL_MIC is not set 701 - # CONFIG_CRYPTO_RMD128 is not set 702 - # CONFIG_CRYPTO_RMD160 is not set 703 - # CONFIG_CRYPTO_RMD256 is not set 704 - # CONFIG_CRYPTO_RMD320 is not set 705 - # CONFIG_CRYPTO_SHA1 is not set 706 - # CONFIG_CRYPTO_SHA256 is not set 707 - # CONFIG_CRYPTO_SHA512 is not set 708 - # CONFIG_CRYPTO_TGR192 is not set 709 - # CONFIG_CRYPTO_WP512 is not set 710 - 711 - # 712 - # Ciphers 713 - # 714 - CONFIG_CRYPTO_AES=y 715 - # CONFIG_CRYPTO_ANUBIS is not set 716 - # CONFIG_CRYPTO_ARC4 is not set 717 - # CONFIG_CRYPTO_BLOWFISH is not set 718 - # CONFIG_CRYPTO_CAMELLIA is not set 719 - # CONFIG_CRYPTO_CAST5 is not set 720 - # CONFIG_CRYPTO_CAST6 is not set 721 - # CONFIG_CRYPTO_DES is not set 722 - # CONFIG_CRYPTO_FCRYPT is not set 723 - # CONFIG_CRYPTO_KHAZAD is not set 724 - # CONFIG_CRYPTO_SALSA20 is not set 725 - # CONFIG_CRYPTO_SEED is not set 726 - # CONFIG_CRYPTO_SERPENT is not set 727 - # CONFIG_CRYPTO_TEA is not set 728 - # CONFIG_CRYPTO_TWOFISH is not set 729 - 730 - # 731 - # Compression 732 - # 733 - # CONFIG_CRYPTO_DEFLATE is not set 734 - # CONFIG_CRYPTO_ZLIB is not set 735 - # CONFIG_CRYPTO_LZO is not set 736 - 737 - # 738 - # Random Number Generation 739 - # 740 34 CONFIG_CRYPTO_ANSI_CPRNG=y 741 - CONFIG_CRYPTO_HW=y 742 - # CONFIG_BINARY_PRINTF is not set 743 - 744 - # 745 - # Library routines 746 - # 747 - CONFIG_GENERIC_FIND_LAST_BIT=y 748 - # CONFIG_CRC_CCITT is not set 749 - # CONFIG_CRC16 is not set 750 - # CONFIG_CRC_T10DIF is not set 751 - # CONFIG_CRC_ITU_T is not set 752 - # CONFIG_CRC32 is not set 753 - # CONFIG_CRC7 is not set 754 - # CONFIG_LIBCRC32C is not set 755 - CONFIG_HAS_IOMEM=y 756 - CONFIG_HAS_DMA=y 757 - CONFIG_NLATTR=y 758 - CONFIG_LD_NO_RELAX=y
+1 -1
arch/xtensa/configs/nommu_kc705_defconfig
··· 37 37 # CONFIG_PCI is not set 38 38 CONFIG_XTENSA_PLATFORM_XTFPGA=y 39 39 CONFIG_CMDLINE_BOOL=y 40 - CONFIG_CMDLINE="earlycon=uart8250,mmio32,0x9d050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug" 40 + CONFIG_CMDLINE="earlycon=uart8250,mmio32native,0x9d050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=256M@0x60000000" 41 41 CONFIG_USE_OF=y 42 42 CONFIG_BUILTIN_DTB="kc705_nommu" 43 43 CONFIG_DEFAULT_MEM_SIZE=0x10000000
+1 -1
arch/xtensa/configs/smp_lx200_defconfig
··· 36 36 # CONFIG_PCI is not set 37 37 CONFIG_XTENSA_PLATFORM_XTFPGA=y 38 38 CONFIG_CMDLINE_BOOL=y 39 - CONFIG_CMDLINE="earlycon=uart8250,mmio32,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug" 39 + CONFIG_CMDLINE="earlycon=uart8250,mmio32native,0xfd050020,115200n8 console=ttyS0,115200n8 ip=dhcp root=/dev/nfs rw debug memmap=96M@0" 40 40 CONFIG_USE_OF=y 41 41 CONFIG_BUILTIN_DTB="lx200mx" 42 42 # CONFIG_COMPACTION is not set
+1 -1
arch/xtensa/include/asm/bitops.h
··· 48 48 * __ffs: Find first bit set in word. Return 0 for bit 0 49 49 */ 50 50 51 - static inline int __ffs(unsigned long x) 51 + static inline unsigned long __ffs(unsigned long x) 52 52 { 53 53 return 31 - __cntlz(x & -x); 54 54 }
+4 -7
arch/xtensa/include/asm/cacheasm.h
··· 69 69 .endm 70 70 71 71 72 - #if XCHAL_DCACHE_LINE_LOCKABLE 73 - 74 72 .macro ___unlock_dcache_all ar at 75 73 76 - #if XCHAL_DCACHE_SIZE 74 + #if XCHAL_DCACHE_LINE_LOCKABLE && XCHAL_DCACHE_SIZE 77 75 __loop_cache_all \ar \at diu XCHAL_DCACHE_SIZE XCHAL_DCACHE_LINEWIDTH 78 76 #endif 79 77 80 78 .endm 81 79 82 - #endif 83 - 84 - #if XCHAL_ICACHE_LINE_LOCKABLE 85 80 86 81 .macro ___unlock_icache_all ar at 87 82 83 + #if XCHAL_ICACHE_LINE_LOCKABLE && XCHAL_ICACHE_SIZE 88 84 __loop_cache_all \ar \at iiu XCHAL_ICACHE_SIZE XCHAL_ICACHE_LINEWIDTH 85 + #endif 89 86 90 87 .endm 91 - #endif 88 + 92 89 93 90 .macro ___flush_invalidate_dcache_all ar at 94 91
+5
arch/xtensa/include/asm/fixmap.h
··· 59 59 */ 60 60 static __always_inline unsigned long fix_to_virt(const unsigned int idx) 61 61 { 62 + /* Check if this memory layout is broken because fixmap overlaps page 63 + * table. 64 + */ 65 + BUILD_BUG_ON(FIXADDR_START < 66 + XCHAL_PAGE_TABLE_VADDR + XCHAL_PAGE_TABLE_SIZE); 62 67 BUILD_BUG_ON(idx >= __end_of_fixed_addresses); 63 68 return __fix_to_virt(idx); 64 69 }
+5
arch/xtensa/include/asm/highmem.h
··· 68 68 69 69 static inline void *kmap(struct page *page) 70 70 { 71 + /* Check if this memory layout is broken because PKMAP overlaps 72 + * page table. 73 + */ 74 + BUILD_BUG_ON(PKMAP_BASE < 75 + XCHAL_PAGE_TABLE_VADDR + XCHAL_PAGE_TABLE_SIZE); 71 76 BUG_ON(in_interrupt()); 72 77 if (!PageHighMem(page)) 73 78 return page_address(page);
+30 -14
arch/xtensa/include/asm/initialize_mmu.h
··· 77 77 78 78 .align 4 79 79 1: movi a2, 0x10000000 80 - movi a3, 0x18000000 81 - add a2, a2, a0 82 - 9: bgeu a2, a3, 9b /* PC is out of the expected range */ 80 + 81 + #if CONFIG_KERNEL_LOAD_ADDRESS < 0x40000000ul 82 + #define TEMP_MAPPING_VADDR 0x40000000 83 + #else 84 + #define TEMP_MAPPING_VADDR 0x00000000 85 + #endif 83 86 84 87 /* Step 1: invalidate mapping at 0x40000000..0x5FFFFFFF. */ 85 88 86 - movi a2, 0x40000000 | XCHAL_SPANNING_WAY 89 + movi a2, TEMP_MAPPING_VADDR | XCHAL_SPANNING_WAY 87 90 idtlb a2 88 91 iitlb a2 89 92 isync ··· 98 95 srli a3, a0, 27 99 96 slli a3, a3, 27 100 97 addi a3, a3, CA_BYPASS 101 - addi a7, a2, -1 98 + addi a7, a2, 5 - XCHAL_SPANNING_WAY 102 99 wdtlb a3, a7 103 100 witlb a3, a7 104 101 isync 105 102 106 103 slli a4, a0, 5 107 104 srli a4, a4, 5 108 - addi a5, a2, -6 105 + addi a5, a2, -XCHAL_SPANNING_WAY 109 106 add a4, a4, a5 110 107 jx a4 111 108 ··· 119 116 add a5, a5, a4 120 117 bne a5, a2, 3b 121 118 122 - /* Step 4: Setup MMU with the old V2 mappings. */ 119 + /* Step 4: Setup MMU with the requested static mappings. */ 120 + 123 121 movi a6, 0x01000000 124 122 wsr a6, ITLBCFG 125 123 wsr a6, DTLBCFG 126 124 isync 127 125 128 - movi a5, 0xd0000005 129 - movi a4, CA_WRITEBACK 126 + movi a5, XCHAL_KSEG_CACHED_VADDR + XCHAL_KSEG_TLB_WAY 127 + movi a4, XCHAL_KSEG_PADDR + CA_WRITEBACK 130 128 wdtlb a4, a5 131 129 witlb a4, a5 132 130 133 - movi a5, 0xd8000005 134 - movi a4, CA_BYPASS 131 + movi a5, XCHAL_KSEG_BYPASS_VADDR + XCHAL_KSEG_TLB_WAY 132 + movi a4, XCHAL_KSEG_PADDR + CA_BYPASS 135 133 wdtlb a4, a5 136 134 witlb a4, a5 137 135 138 - movi a5, XCHAL_KIO_CACHED_VADDR + 6 136 + #ifdef CONFIG_XTENSA_KSEG_512M 137 + movi a5, XCHAL_KSEG_CACHED_VADDR + 0x10000000 + XCHAL_KSEG_TLB_WAY 138 + movi a4, XCHAL_KSEG_PADDR + 0x10000000 + CA_WRITEBACK 139 + wdtlb a4, a5 140 + witlb a4, a5 141 + 142 + movi a5, XCHAL_KSEG_BYPASS_VADDR + 0x10000000 + XCHAL_KSEG_TLB_WAY 143 + movi a4, XCHAL_KSEG_PADDR + 0x10000000 + CA_BYPASS 144 + wdtlb a4, a5 145 + witlb a4, a5 146 + #endif 147 + 148 + movi a5, XCHAL_KIO_CACHED_VADDR + XCHAL_KIO_TLB_WAY 139 149 movi a4, XCHAL_KIO_DEFAULT_PADDR + CA_WRITEBACK 140 150 wdtlb a4, a5 141 151 witlb a4, a5 142 152 143 - movi a5, XCHAL_KIO_BYPASS_VADDR + 6 153 + movi a5, XCHAL_KIO_BYPASS_VADDR + XCHAL_KIO_TLB_WAY 144 154 movi a4, XCHAL_KIO_DEFAULT_PADDR + CA_BYPASS 145 155 wdtlb a4, a5 146 156 witlb a4, a5 147 157 148 158 isync 149 159 150 - /* Jump to self, using MMU v2 mappings. */ 160 + /* Jump to self, using final mappings. */ 151 161 movi a4, 1f 152 162 jx a4 153 163
+74
arch/xtensa/include/asm/kmem_layout.h
··· 1 + /* 2 + * Kernel virtual memory layout definitions. 3 + * 4 + * This file is subject to the terms and conditions of the GNU General 5 + * Public License. See the file "COPYING" in the main directory of 6 + * this archive for more details. 7 + * 8 + * Copyright (C) 2016 Cadence Design Systems Inc. 9 + */ 10 + 11 + #ifndef _XTENSA_KMEM_LAYOUT_H 12 + #define _XTENSA_KMEM_LAYOUT_H 13 + 14 + #include <asm/types.h> 15 + 16 + #ifdef CONFIG_MMU 17 + 18 + /* 19 + * Fixed TLB translations in the processor. 20 + */ 21 + 22 + #define XCHAL_PAGE_TABLE_VADDR __XTENSA_UL_CONST(0x80000000) 23 + #define XCHAL_PAGE_TABLE_SIZE __XTENSA_UL_CONST(0x00400000) 24 + 25 + #if defined(CONFIG_XTENSA_KSEG_MMU_V2) 26 + 27 + #define XCHAL_KSEG_CACHED_VADDR __XTENSA_UL_CONST(0xd0000000) 28 + #define XCHAL_KSEG_BYPASS_VADDR __XTENSA_UL_CONST(0xd8000000) 29 + #define XCHAL_KSEG_SIZE __XTENSA_UL_CONST(0x08000000) 30 + #define XCHAL_KSEG_ALIGNMENT __XTENSA_UL_CONST(0x08000000) 31 + #define XCHAL_KSEG_TLB_WAY 5 32 + #define XCHAL_KIO_TLB_WAY 6 33 + 34 + #elif defined(CONFIG_XTENSA_KSEG_256M) 35 + 36 + #define XCHAL_KSEG_CACHED_VADDR __XTENSA_UL_CONST(0xb0000000) 37 + #define XCHAL_KSEG_BYPASS_VADDR __XTENSA_UL_CONST(0xc0000000) 38 + #define XCHAL_KSEG_SIZE __XTENSA_UL_CONST(0x10000000) 39 + #define XCHAL_KSEG_ALIGNMENT __XTENSA_UL_CONST(0x10000000) 40 + #define XCHAL_KSEG_TLB_WAY 6 41 + #define XCHAL_KIO_TLB_WAY 6 42 + 43 + #elif defined(CONFIG_XTENSA_KSEG_512M) 44 + 45 + #define XCHAL_KSEG_CACHED_VADDR __XTENSA_UL_CONST(0xa0000000) 46 + #define XCHAL_KSEG_BYPASS_VADDR __XTENSA_UL_CONST(0xc0000000) 47 + #define XCHAL_KSEG_SIZE __XTENSA_UL_CONST(0x20000000) 48 + #define XCHAL_KSEG_ALIGNMENT __XTENSA_UL_CONST(0x10000000) 49 + #define XCHAL_KSEG_TLB_WAY 6 50 + #define XCHAL_KIO_TLB_WAY 6 51 + 52 + #else 53 + #error Unsupported KSEG configuration 54 + #endif 55 + 56 + #ifdef CONFIG_KSEG_PADDR 57 + #define XCHAL_KSEG_PADDR __XTENSA_UL_CONST(CONFIG_KSEG_PADDR) 58 + #else 59 + #define XCHAL_KSEG_PADDR __XTENSA_UL_CONST(0x00000000) 60 + #endif 61 + 62 + #if XCHAL_KSEG_PADDR & (XCHAL_KSEG_ALIGNMENT - 1) 63 + #error XCHAL_KSEG_PADDR is not properly aligned to XCHAL_KSEG_ALIGNMENT 64 + #endif 65 + 66 + #else 67 + 68 + #define XCHAL_KSEG_CACHED_VADDR __XTENSA_UL_CONST(0xd0000000) 69 + #define XCHAL_KSEG_BYPASS_VADDR __XTENSA_UL_CONST(0xd8000000) 70 + #define XCHAL_KSEG_SIZE __XTENSA_UL_CONST(0x08000000) 71 + 72 + #endif 73 + 74 + #endif
+12 -15
arch/xtensa/include/asm/page.h
··· 15 15 #include <asm/types.h> 16 16 #include <asm/cache.h> 17 17 #include <platform/hardware.h> 18 - 19 - /* 20 - * Fixed TLB translations in the processor. 21 - */ 22 - 23 - #define XCHAL_KSEG_CACHED_VADDR __XTENSA_UL_CONST(0xd0000000) 24 - #define XCHAL_KSEG_BYPASS_VADDR __XTENSA_UL_CONST(0xd8000000) 25 - #define XCHAL_KSEG_PADDR __XTENSA_UL_CONST(0x00000000) 26 - #define XCHAL_KSEG_SIZE __XTENSA_UL_CONST(0x08000000) 18 + #include <asm/kmem_layout.h> 27 19 28 20 /* 29 21 * PAGE_SHIFT determines the page size ··· 27 35 28 36 #ifdef CONFIG_MMU 29 37 #define PAGE_OFFSET XCHAL_KSEG_CACHED_VADDR 30 - #define MAX_MEM_PFN XCHAL_KSEG_SIZE 38 + #define PHYS_OFFSET XCHAL_KSEG_PADDR 39 + #define MAX_LOW_PFN (PHYS_PFN(XCHAL_KSEG_PADDR) + \ 40 + PHYS_PFN(XCHAL_KSEG_SIZE)) 31 41 #else 32 - #define PAGE_OFFSET __XTENSA_UL_CONST(0) 33 - #define MAX_MEM_PFN (PLATFORM_DEFAULT_MEM_START + PLATFORM_DEFAULT_MEM_SIZE) 42 + #define PAGE_OFFSET PLATFORM_DEFAULT_MEM_START 43 + #define PHYS_OFFSET PLATFORM_DEFAULT_MEM_START 44 + #define MAX_LOW_PFN PHYS_PFN(0xfffffffful) 34 45 #endif 35 46 36 47 #define PGTABLE_START 0x80000000 ··· 162 167 * addresses. 163 168 */ 164 169 165 - #define ARCH_PFN_OFFSET (PLATFORM_DEFAULT_MEM_START >> PAGE_SHIFT) 170 + #define ARCH_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT) 166 171 167 - #define __pa(x) ((unsigned long) (x) - PAGE_OFFSET) 168 - #define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET)) 172 + #define __pa(x) \ 173 + ((unsigned long) (x) - PAGE_OFFSET + PHYS_OFFSET) 174 + #define __va(x) \ 175 + ((void *)((unsigned long) (x) - PHYS_OFFSET + PAGE_OFFSET)) 169 176 #define pfn_valid(pfn) \ 170 177 ((pfn) >= ARCH_PFN_OFFSET && ((pfn) - ARCH_PFN_OFFSET) < max_mapnr) 171 178
+4 -3
arch/xtensa/include/asm/pgtable.h
··· 13 13 14 14 #include <asm-generic/pgtable-nopmd.h> 15 15 #include <asm/page.h> 16 + #include <asm/kmem_layout.h> 16 17 17 18 /* 18 19 * We only use two ring levels, user and kernel space. ··· 69 68 * Virtual memory area. We keep a distance to other memory regions to be 70 69 * on the safe side. We also use this area for cache aliasing. 71 70 */ 72 - #define VMALLOC_START 0xC0000000 73 - #define VMALLOC_END 0xC7FEFFFF 74 - #define TLBTEMP_BASE_1 0xC7FF0000 71 + #define VMALLOC_START (XCHAL_KSEG_CACHED_VADDR - 0x10000000) 72 + #define VMALLOC_END (VMALLOC_START + 0x07FEFFFF) 73 + #define TLBTEMP_BASE_1 (VMALLOC_END + 1) 75 74 #define TLBTEMP_BASE_2 (TLBTEMP_BASE_1 + DCACHE_WAY_SIZE) 76 75 #if 2 * DCACHE_WAY_SIZE > ICACHE_WAY_SIZE 77 76 #define TLBTEMP_SIZE (2 * DCACHE_WAY_SIZE)
+6
arch/xtensa/include/asm/platform.h
··· 69 69 */ 70 70 extern void platform_calibrate_ccount (void); 71 71 72 + /* 73 + * Flush and reset the mmu, simulate a processor reset, and 74 + * jump to the reset vector. 75 + */ 76 + void cpu_reset(void) __attribute__((noreturn)); 77 + 72 78 #endif /* _XTENSA_PLATFORM_H */
+1 -1
arch/xtensa/include/asm/processor.h
··· 37 37 #ifdef CONFIG_MMU 38 38 #define TASK_SIZE __XTENSA_UL_CONST(0x40000000) 39 39 #else 40 - #define TASK_SIZE (PLATFORM_DEFAULT_MEM_START + PLATFORM_DEFAULT_MEM_SIZE) 40 + #define TASK_SIZE __XTENSA_UL_CONST(0xffffffff) 41 41 #endif 42 42 43 43 #define STACK_TOP TASK_SIZE
+1 -20
arch/xtensa/include/asm/sysmem.h
··· 11 11 #ifndef _XTENSA_SYSMEM_H 12 12 #define _XTENSA_SYSMEM_H 13 13 14 - #define SYSMEM_BANKS_MAX 31 14 + #include <linux/memblock.h> 15 15 16 - struct meminfo { 17 - unsigned long start; 18 - unsigned long end; 19 - }; 20 - 21 - /* 22 - * Bank array is sorted by .start. 23 - * Banks don't overlap and there's at least one page gap 24 - * between adjacent bank entries. 25 - */ 26 - struct sysmem_info { 27 - int nr_banks; 28 - struct meminfo bank[SYSMEM_BANKS_MAX]; 29 - }; 30 - 31 - extern struct sysmem_info sysmem; 32 - 33 - int add_sysmem_bank(unsigned long start, unsigned long end); 34 - int mem_reserve(unsigned long, unsigned long, int); 35 16 void bootmem_init(void); 36 17 void zones_init(void); 37 18
+24 -43
arch/xtensa/include/asm/vectors.h
··· 20 20 21 21 #include <variant/core.h> 22 22 #include <platform/hardware.h> 23 + #include <asm/kmem_layout.h> 23 24 24 25 #if XCHAL_HAVE_PTP_MMU 25 26 #define XCHAL_KIO_CACHED_VADDR 0xe0000000 ··· 48 47 49 48 #if defined(CONFIG_MMU) 50 49 51 - /* Will Become VECBASE */ 52 - #define VIRTUAL_MEMORY_ADDRESS 0xD0000000 53 - 50 + #if XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY 54 51 /* Image Virtual Start Address */ 55 - #define KERNELOFFSET 0xD0003000 56 - 57 - #if defined(XCHAL_HAVE_PTP_MMU) && XCHAL_HAVE_PTP_MMU && XCHAL_HAVE_SPANNING_WAY 58 - /* MMU v3 - XCHAL_HAVE_PTP_MMU == 1 */ 59 - #define LOAD_MEMORY_ADDRESS 0x00003000 52 + #define KERNELOFFSET (XCHAL_KSEG_CACHED_VADDR + \ 53 + CONFIG_KERNEL_LOAD_ADDRESS - \ 54 + XCHAL_KSEG_PADDR) 60 55 #else 61 - /* MMU V2 - XCHAL_HAVE_PTP_MMU == 0 */ 62 - #define LOAD_MEMORY_ADDRESS 0xD0003000 56 + #define KERNELOFFSET CONFIG_KERNEL_LOAD_ADDRESS 63 57 #endif 64 - 65 - #define RESET_VECTOR1_VADDR (VIRTUAL_MEMORY_ADDRESS + \ 66 - XCHAL_RESET_VECTOR1_PADDR) 67 58 68 59 #else /* !defined(CONFIG_MMU) */ 69 60 /* MMU Not being used - Virtual == Physical */ 70 61 71 - /* VECBASE */ 72 - #define VIRTUAL_MEMORY_ADDRESS (PLATFORM_DEFAULT_MEM_START + 0x2000) 62 + /* Location of the start of the kernel text, _start */ 63 + #define KERNELOFFSET CONFIG_KERNEL_LOAD_ADDRESS 73 64 74 - /* Location of the start of the kernel text, _start */ 75 - #define KERNELOFFSET (PLATFORM_DEFAULT_MEM_START + 0x3000) 76 - 77 - /* Loaded just above possibly live vectors */ 78 - #define LOAD_MEMORY_ADDRESS (PLATFORM_DEFAULT_MEM_START + 0x3000) 79 - 80 - #define RESET_VECTOR1_VADDR (XCHAL_RESET_VECTOR1_VADDR) 81 65 82 66 #endif /* CONFIG_MMU */ 83 67 84 - #define XC_VADDR(offset) (VIRTUAL_MEMORY_ADDRESS + offset) 85 - 86 - /* Used to set VECBASE register */ 87 - #define VECBASE_RESET_VADDR VIRTUAL_MEMORY_ADDRESS 68 + #define RESET_VECTOR1_VADDR (XCHAL_RESET_VECTOR1_VADDR) 69 + #define VECBASE_VADDR (KERNELOFFSET - CONFIG_VECTORS_OFFSET) 88 70 89 71 #if defined(XCHAL_HAVE_VECBASE) && XCHAL_HAVE_VECBASE 90 72 91 - #define USER_VECTOR_VADDR XC_VADDR(XCHAL_USER_VECOFS) 92 - #define KERNEL_VECTOR_VADDR XC_VADDR(XCHAL_KERNEL_VECOFS) 93 - #define DOUBLEEXC_VECTOR_VADDR XC_VADDR(XCHAL_DOUBLEEXC_VECOFS) 94 - #define WINDOW_VECTORS_VADDR XC_VADDR(XCHAL_WINDOW_OF4_VECOFS) 95 - #define INTLEVEL2_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL2_VECOFS) 96 - #define INTLEVEL3_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL3_VECOFS) 97 - #define INTLEVEL4_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL4_VECOFS) 98 - #define INTLEVEL5_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL5_VECOFS) 99 - #define INTLEVEL6_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL6_VECOFS) 73 + #define VECTOR_VADDR(offset) (VECBASE_VADDR + offset) 100 74 101 - #define DEBUG_VECTOR_VADDR XC_VADDR(XCHAL_DEBUG_VECOFS) 102 - 103 - #define NMI_VECTOR_VADDR XC_VADDR(XCHAL_NMI_VECOFS) 104 - 105 - #define INTLEVEL7_VECTOR_VADDR XC_VADDR(XCHAL_INTLEVEL7_VECOFS) 75 + #define USER_VECTOR_VADDR VECTOR_VADDR(XCHAL_USER_VECOFS) 76 + #define KERNEL_VECTOR_VADDR VECTOR_VADDR(XCHAL_KERNEL_VECOFS) 77 + #define DOUBLEEXC_VECTOR_VADDR VECTOR_VADDR(XCHAL_DOUBLEEXC_VECOFS) 78 + #define WINDOW_VECTORS_VADDR VECTOR_VADDR(XCHAL_WINDOW_OF4_VECOFS) 79 + #define INTLEVEL2_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL2_VECOFS) 80 + #define INTLEVEL3_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL3_VECOFS) 81 + #define INTLEVEL4_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL4_VECOFS) 82 + #define INTLEVEL5_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL5_VECOFS) 83 + #define INTLEVEL6_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL6_VECOFS) 84 + #define INTLEVEL7_VECTOR_VADDR VECTOR_VADDR(XCHAL_INTLEVEL7_VECOFS) 85 + #define DEBUG_VECTOR_VADDR VECTOR_VADDR(XCHAL_DEBUG_VECOFS) 106 86 107 87 /* 108 88 * These XCHAL_* #defines from varian/core.h ··· 91 109 * constants are defined above and should be used. 92 110 */ 93 111 #undef XCHAL_VECBASE_RESET_VADDR 94 - #undef XCHAL_RESET_VECTOR0_VADDR 95 112 #undef XCHAL_USER_VECTOR_VADDR 96 113 #undef XCHAL_KERNEL_VECTOR_VADDR 97 114 #undef XCHAL_DOUBLEEXC_VECTOR_VADDR ··· 100 119 #undef XCHAL_INTLEVEL4_VECTOR_VADDR 101 120 #undef XCHAL_INTLEVEL5_VECTOR_VADDR 102 121 #undef XCHAL_INTLEVEL6_VECTOR_VADDR 103 - #undef XCHAL_DEBUG_VECTOR_VADDR 104 - #undef XCHAL_NMI_VECTOR_VADDR 105 122 #undef XCHAL_INTLEVEL7_VECTOR_VADDR 123 + #undef XCHAL_DEBUG_VECTOR_VADDR 106 124 107 125 #else 108 126 ··· 114 134 #define INTLEVEL4_VECTOR_VADDR XCHAL_INTLEVEL4_VECTOR_VADDR 115 135 #define INTLEVEL5_VECTOR_VADDR XCHAL_INTLEVEL5_VECTOR_VADDR 116 136 #define INTLEVEL6_VECTOR_VADDR XCHAL_INTLEVEL6_VECTOR_VADDR 137 + #define INTLEVEL7_VECTOR_VADDR XCHAL_INTLEVEL6_VECTOR_VADDR 117 138 #define DEBUG_VECTOR_VADDR XCHAL_DEBUG_VECTOR_VADDR 118 139 119 140 #endif
+2 -1
arch/xtensa/include/uapi/asm/types.h
··· 18 18 # define __XTENSA_UL_CONST(x) x 19 19 #else 20 20 # define __XTENSA_UL(x) ((unsigned long)(x)) 21 - # define __XTENSA_UL_CONST(x) x##UL 21 + # define ___XTENSA_UL_CONST(x) x##UL 22 + # define __XTENSA_UL_CONST(x) ___XTENSA_UL_CONST(x) 22 23 #endif 23 24 24 25 #ifndef __ASSEMBLY__
+14 -1
arch/xtensa/include/uapi/asm/unistd.h
··· 754 754 #define __NR_execveat 341 755 755 __SYSCALL(341, sys_execveat, 5) 756 756 757 - #define __NR_syscall_count 342 757 + #define __NR_userfaultfd 342 758 + __SYSCALL(342, sys_userfaultfd, 1) 759 + #define __NR_membarrier 343 760 + __SYSCALL(343, sys_membarrier, 2) 761 + #define __NR_mlock2 344 762 + __SYSCALL(344, sys_mlock2, 3) 763 + #define __NR_copy_file_range 345 764 + __SYSCALL(345, sys_copy_file_range, 6) 765 + #define __NR_preadv2 346 766 + __SYSCALL(346, sys_preadv2, 6) 767 + #define __NR_pwritev2 347 768 + __SYSCALL(347, sys_pwritev2, 6) 769 + 770 + #define __NR_syscall_count 348 758 771 759 772 /* 760 773 * sysxtensa syscall handler
+3 -2
arch/xtensa/kernel/entry.S
··· 1632 1632 * The messy computation for 'pteval' above really simplifies 1633 1633 * into the following: 1634 1634 * 1635 - * pteval = ((pmdval - PAGE_OFFSET) & PAGE_MASK) | PAGE_DIRECTORY 1635 + * pteval = ((pmdval - PAGE_OFFSET + PHYS_OFFSET) & PAGE_MASK) 1636 + * | PAGE_DIRECTORY 1636 1637 */ 1637 1638 1638 - movi a1, (-PAGE_OFFSET) & 0xffffffff 1639 + movi a1, (PHYS_OFFSET - PAGE_OFFSET) & 0xffffffff 1639 1640 add a0, a0, a1 # pmdval - PAGE_OFFSET 1640 1641 extui a1, a0, 0, PAGE_SHIFT # ... & PAGE_MASK 1641 1642 xor a0, a0, a1
+1 -1
arch/xtensa/kernel/head.S
··· 113 113 movi a0, 0 114 114 115 115 #if XCHAL_HAVE_VECBASE 116 - movi a2, VECBASE_RESET_VADDR 116 + movi a2, VECBASE_VADDR 117 117 wsr a2, vecbase 118 118 #endif 119 119
+151 -37
arch/xtensa/kernel/setup.c
··· 7 7 * 8 8 * Copyright (C) 1995 Linus Torvalds 9 9 * Copyright (C) 2001 - 2005 Tensilica Inc. 10 + * Copyright (C) 2014 - 2016 Cadence Design Systems Inc. 10 11 * 11 12 * Chris Zankel <chris@zankel.net> 12 13 * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com> ··· 23 22 #include <linux/bootmem.h> 24 23 #include <linux/kernel.h> 25 24 #include <linux/percpu.h> 26 - #include <linux/clk-provider.h> 27 25 #include <linux/cpu.h> 28 26 #include <linux/of.h> 29 27 #include <linux/of_fdt.h> ··· 114 114 if (mi->type != MEMORY_TYPE_CONVENTIONAL) 115 115 return -1; 116 116 117 - return add_sysmem_bank(mi->start, mi->end); 117 + return memblock_add(mi->start, mi->end - mi->start); 118 118 } 119 119 120 120 __tagtable(BP_TAG_MEMORY, parse_tag_mem); ··· 188 188 } 189 189 190 190 #ifdef CONFIG_OF 191 - bool __initdata dt_memory_scan = false; 192 191 193 192 #if !XCHAL_HAVE_PTP_MMU || XCHAL_HAVE_SPANNING_WAY 194 193 unsigned long xtensa_kio_paddr = XCHAL_KIO_DEFAULT_PADDR; ··· 227 228 228 229 void __init early_init_dt_add_memory_arch(u64 base, u64 size) 229 230 { 230 - if (!dt_memory_scan) 231 - return; 232 - 233 231 size &= PAGE_MASK; 234 - add_sysmem_bank(base, base + size); 232 + memblock_add(base, size); 235 233 } 236 234 237 235 void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) ··· 238 242 239 243 void __init early_init_devtree(void *params) 240 244 { 241 - if (sysmem.nr_banks == 0) 242 - dt_memory_scan = true; 243 - 244 245 early_init_dt_scan(params); 245 246 of_scan_flat_dt(xtensa_dt_io_area, NULL); 246 247 247 248 if (!command_line[0]) 248 249 strlcpy(command_line, boot_command_line, COMMAND_LINE_SIZE); 249 250 } 250 - 251 - static int __init xtensa_device_probe(void) 252 - { 253 - of_clk_init(NULL); 254 - return 0; 255 - } 256 - 257 - device_initcall(xtensa_device_probe); 258 251 259 252 #endif /* CONFIG_OF */ 260 253 ··· 261 276 #ifdef CONFIG_OF 262 277 early_init_devtree(dtb_start); 263 278 #endif 264 - 265 - if (sysmem.nr_banks == 0) { 266 - add_sysmem_bank(PLATFORM_DEFAULT_MEM_START, 267 - PLATFORM_DEFAULT_MEM_START + 268 - PLATFORM_DEFAULT_MEM_SIZE); 269 - } 270 279 271 280 #ifdef CONFIG_CMDLINE_BOOL 272 281 if (!command_line[0]) ··· 431 452 early_initcall(check_s32c1i); 432 453 #endif /* CONFIG_S32C1I_SELFTEST */ 433 454 455 + static inline int mem_reserve(unsigned long start, unsigned long end) 456 + { 457 + return memblock_reserve(start, end - start); 458 + } 434 459 435 460 void __init setup_arch(char **cmdline_p) 436 461 { ··· 446 463 #ifdef CONFIG_BLK_DEV_INITRD 447 464 if (initrd_start < initrd_end) { 448 465 initrd_is_mapped = mem_reserve(__pa(initrd_start), 449 - __pa(initrd_end), 0) == 0; 466 + __pa(initrd_end)) == 0; 450 467 initrd_below_start_ok = 1; 451 468 } else { 452 469 initrd_start = 0; 453 470 } 454 471 #endif 455 472 456 - mem_reserve(__pa(&_stext),__pa(&_end), 1); 473 + mem_reserve(__pa(&_stext), __pa(&_end)); 457 474 458 475 mem_reserve(__pa(&_WindowVectors_text_start), 459 - __pa(&_WindowVectors_text_end), 0); 476 + __pa(&_WindowVectors_text_end)); 460 477 461 478 mem_reserve(__pa(&_DebugInterruptVector_literal_start), 462 - __pa(&_DebugInterruptVector_text_end), 0); 479 + __pa(&_DebugInterruptVector_text_end)); 463 480 464 481 mem_reserve(__pa(&_KernelExceptionVector_literal_start), 465 - __pa(&_KernelExceptionVector_text_end), 0); 482 + __pa(&_KernelExceptionVector_text_end)); 466 483 467 484 mem_reserve(__pa(&_UserExceptionVector_literal_start), 468 - __pa(&_UserExceptionVector_text_end), 0); 485 + __pa(&_UserExceptionVector_text_end)); 469 486 470 487 mem_reserve(__pa(&_DoubleExceptionVector_literal_start), 471 - __pa(&_DoubleExceptionVector_text_end), 0); 488 + __pa(&_DoubleExceptionVector_text_end)); 472 489 473 490 #if XCHAL_EXCM_LEVEL >= 2 474 491 mem_reserve(__pa(&_Level2InterruptVector_text_start), 475 - __pa(&_Level2InterruptVector_text_end), 0); 492 + __pa(&_Level2InterruptVector_text_end)); 476 493 #endif 477 494 #if XCHAL_EXCM_LEVEL >= 3 478 495 mem_reserve(__pa(&_Level3InterruptVector_text_start), 479 - __pa(&_Level3InterruptVector_text_end), 0); 496 + __pa(&_Level3InterruptVector_text_end)); 480 497 #endif 481 498 #if XCHAL_EXCM_LEVEL >= 4 482 499 mem_reserve(__pa(&_Level4InterruptVector_text_start), 483 - __pa(&_Level4InterruptVector_text_end), 0); 500 + __pa(&_Level4InterruptVector_text_end)); 484 501 #endif 485 502 #if XCHAL_EXCM_LEVEL >= 5 486 503 mem_reserve(__pa(&_Level5InterruptVector_text_start), 487 - __pa(&_Level5InterruptVector_text_end), 0); 504 + __pa(&_Level5InterruptVector_text_end)); 488 505 #endif 489 506 #if XCHAL_EXCM_LEVEL >= 6 490 507 mem_reserve(__pa(&_Level6InterruptVector_text_start), 491 - __pa(&_Level6InterruptVector_text_end), 0); 508 + __pa(&_Level6InterruptVector_text_end)); 492 509 #endif 493 510 494 511 #ifdef CONFIG_SMP 495 512 mem_reserve(__pa(&_SecondaryResetVector_text_start), 496 - __pa(&_SecondaryResetVector_text_end), 0); 513 + __pa(&_SecondaryResetVector_text_end)); 497 514 #endif 498 515 parse_early_param(); 499 516 bootmem_init(); ··· 537 554 return 0; 538 555 } 539 556 subsys_initcall(topology_init); 557 + 558 + void cpu_reset(void) 559 + { 560 + #if XCHAL_HAVE_PTP_MMU 561 + local_irq_disable(); 562 + /* 563 + * We have full MMU: all autoload ways, ways 7, 8 and 9 of DTLB must 564 + * be flushed. 565 + * Way 4 is not currently used by linux. 566 + * Ways 5 and 6 shall not be touched on MMUv2 as they are hardwired. 567 + * Way 5 shall be flushed and way 6 shall be set to identity mapping 568 + * on MMUv3. 569 + */ 570 + local_flush_tlb_all(); 571 + invalidate_page_directory(); 572 + #if XCHAL_HAVE_SPANNING_WAY 573 + /* MMU v3 */ 574 + { 575 + unsigned long vaddr = (unsigned long)cpu_reset; 576 + unsigned long paddr = __pa(vaddr); 577 + unsigned long tmpaddr = vaddr + SZ_512M; 578 + unsigned long tmp0, tmp1, tmp2, tmp3; 579 + 580 + /* 581 + * Find a place for the temporary mapping. It must not be 582 + * in the same 512MB region with vaddr or paddr, otherwise 583 + * there may be multihit exception either on entry to the 584 + * temporary mapping, or on entry to the identity mapping. 585 + * (512MB is the biggest page size supported by TLB.) 586 + */ 587 + while (((tmpaddr ^ paddr) & -SZ_512M) == 0) 588 + tmpaddr += SZ_512M; 589 + 590 + /* Invalidate mapping in the selected temporary area */ 591 + if (itlb_probe(tmpaddr) & 0x8) 592 + invalidate_itlb_entry(itlb_probe(tmpaddr)); 593 + if (itlb_probe(tmpaddr + PAGE_SIZE) & 0x8) 594 + invalidate_itlb_entry(itlb_probe(tmpaddr + PAGE_SIZE)); 595 + 596 + /* 597 + * Map two consecutive pages starting at the physical address 598 + * of this function to the temporary mapping area. 599 + */ 600 + write_itlb_entry(__pte((paddr & PAGE_MASK) | 601 + _PAGE_HW_VALID | 602 + _PAGE_HW_EXEC | 603 + _PAGE_CA_BYPASS), 604 + tmpaddr & PAGE_MASK); 605 + write_itlb_entry(__pte(((paddr & PAGE_MASK) + PAGE_SIZE) | 606 + _PAGE_HW_VALID | 607 + _PAGE_HW_EXEC | 608 + _PAGE_CA_BYPASS), 609 + (tmpaddr & PAGE_MASK) + PAGE_SIZE); 610 + 611 + /* Reinitialize TLB */ 612 + __asm__ __volatile__ ("movi %0, 1f\n\t" 613 + "movi %3, 2f\n\t" 614 + "add %0, %0, %4\n\t" 615 + "add %3, %3, %5\n\t" 616 + "jx %0\n" 617 + /* 618 + * No literal, data or stack access 619 + * below this point 620 + */ 621 + "1:\n\t" 622 + /* Initialize *tlbcfg */ 623 + "movi %0, 0\n\t" 624 + "wsr %0, itlbcfg\n\t" 625 + "wsr %0, dtlbcfg\n\t" 626 + /* Invalidate TLB way 5 */ 627 + "movi %0, 4\n\t" 628 + "movi %1, 5\n" 629 + "1:\n\t" 630 + "iitlb %1\n\t" 631 + "idtlb %1\n\t" 632 + "add %1, %1, %6\n\t" 633 + "addi %0, %0, -1\n\t" 634 + "bnez %0, 1b\n\t" 635 + /* Initialize TLB way 6 */ 636 + "movi %0, 7\n\t" 637 + "addi %1, %9, 3\n\t" 638 + "addi %2, %9, 6\n" 639 + "1:\n\t" 640 + "witlb %1, %2\n\t" 641 + "wdtlb %1, %2\n\t" 642 + "add %1, %1, %7\n\t" 643 + "add %2, %2, %7\n\t" 644 + "addi %0, %0, -1\n\t" 645 + "bnez %0, 1b\n\t" 646 + /* Jump to identity mapping */ 647 + "jx %3\n" 648 + "2:\n\t" 649 + /* Complete way 6 initialization */ 650 + "witlb %1, %2\n\t" 651 + "wdtlb %1, %2\n\t" 652 + /* Invalidate temporary mapping */ 653 + "sub %0, %9, %7\n\t" 654 + "iitlb %0\n\t" 655 + "add %0, %0, %8\n\t" 656 + "iitlb %0" 657 + : "=&a"(tmp0), "=&a"(tmp1), "=&a"(tmp2), 658 + "=&a"(tmp3) 659 + : "a"(tmpaddr - vaddr), 660 + "a"(paddr - vaddr), 661 + "a"(SZ_128M), "a"(SZ_512M), 662 + "a"(PAGE_SIZE), 663 + "a"((tmpaddr + SZ_512M) & PAGE_MASK) 664 + : "memory"); 665 + } 666 + #endif 667 + #endif 668 + __asm__ __volatile__ ("movi a2, 0\n\t" 669 + "wsr a2, icountlevel\n\t" 670 + "movi a2, 0\n\t" 671 + "wsr a2, icount\n\t" 672 + #if XCHAL_NUM_IBREAK > 0 673 + "wsr a2, ibreakenable\n\t" 674 + #endif 675 + #if XCHAL_HAVE_LOOPS 676 + "wsr a2, lcount\n\t" 677 + #endif 678 + "movi a2, 0x1f\n\t" 679 + "wsr a2, ps\n\t" 680 + "isync\n\t" 681 + "jx %0\n\t" 682 + : 683 + : "a" (XCHAL_RESET_VECTOR_VADDR) 684 + : "a2"); 685 + for (;;) 686 + ; 687 + } 540 688 541 689 void machine_restart(char * cmd) 542 690 {
+39 -1
arch/xtensa/kernel/time.c
··· 12 12 * Chris Zankel <chris@zankel.net> 13 13 */ 14 14 15 + #include <linux/clk.h> 16 + #include <linux/clk-provider.h> 15 17 #include <linux/errno.h> 16 18 #include <linux/sched.h> 17 19 #include <linux/time.h> ··· 136 134 0xf, 0xffffffff); 137 135 } 138 136 137 + #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT 138 + #ifdef CONFIG_OF 139 + static void __init calibrate_ccount(void) 140 + { 141 + struct device_node *cpu; 142 + struct clk *clk; 143 + 144 + cpu = of_find_compatible_node(NULL, NULL, "cdns,xtensa-cpu"); 145 + if (cpu) { 146 + clk = of_clk_get(cpu, 0); 147 + if (!IS_ERR(clk)) { 148 + ccount_freq = clk_get_rate(clk); 149 + return; 150 + } else { 151 + pr_warn("%s: CPU input clock not found\n", 152 + __func__); 153 + } 154 + } else { 155 + pr_warn("%s: CPU node not found in the device tree\n", 156 + __func__); 157 + } 158 + 159 + platform_calibrate_ccount(); 160 + } 161 + #else 162 + static inline void calibrate_ccount(void) 163 + { 164 + platform_calibrate_ccount(); 165 + } 166 + #endif 167 + #endif 168 + 139 169 void __init time_init(void) 140 170 { 171 + of_clk_init(NULL); 141 172 #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT 142 173 printk("Calibrating CPU frequency "); 143 - platform_calibrate_ccount(); 174 + calibrate_ccount(); 144 175 printk("%d.%02d MHz\n", (int)ccount_freq/1000000, 145 176 (int)(ccount_freq/10000)%100); 146 177 #else 147 178 ccount_freq = CONFIG_XTENSA_CPU_CLOCK*1000000UL; 148 179 #endif 180 + WARN(!ccount_freq, 181 + "%s: CPU clock frequency is not set up correctly\n", 182 + __func__); 149 183 clocksource_register_hz(&ccount_clocksource, ccount_freq); 150 184 local_timer_setup(0); 151 185 setup_irq(this_cpu_ptr(&ccount_timer)->evt.irq, &timer_irqaction);
-4
arch/xtensa/kernel/vmlinux.lds.S
··· 30 30 jiffies = jiffies_64; 31 31 #endif 32 32 33 - #ifndef KERNELOFFSET 34 - #define KERNELOFFSET 0xd0003000 35 - #endif 36 - 37 33 /* Note: In the following macros, it would be nice to specify only the 38 34 vector name and section kind and construct "sym" and "section" using 39 35 CPP concatenation, but that does not work reliably. Concatenating a
+19 -260
arch/xtensa/mm/init.c
··· 8 8 * for more details. 9 9 * 10 10 * Copyright (C) 2001 - 2005 Tensilica Inc. 11 - * Copyright (C) 2014 Cadence Design Systems Inc. 11 + * Copyright (C) 2014 - 2016 Cadence Design Systems Inc. 12 12 * 13 13 * Chris Zankel <chris@zankel.net> 14 14 * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com> ··· 25 25 #include <linux/mman.h> 26 26 #include <linux/nodemask.h> 27 27 #include <linux/mm.h> 28 + #include <linux/of_fdt.h> 28 29 29 30 #include <asm/bootparam.h> 30 31 #include <asm/page.h> 31 32 #include <asm/sections.h> 32 33 #include <asm/sysmem.h> 33 - 34 - struct sysmem_info sysmem __initdata; 35 - 36 - static void __init sysmem_dump(void) 37 - { 38 - unsigned i; 39 - 40 - pr_debug("Sysmem:\n"); 41 - for (i = 0; i < sysmem.nr_banks; ++i) 42 - pr_debug(" 0x%08lx - 0x%08lx (%ldK)\n", 43 - sysmem.bank[i].start, sysmem.bank[i].end, 44 - (sysmem.bank[i].end - sysmem.bank[i].start) >> 10); 45 - } 46 - 47 - /* 48 - * Find bank with maximal .start such that bank.start <= start 49 - */ 50 - static inline struct meminfo * __init find_bank(unsigned long start) 51 - { 52 - unsigned i; 53 - struct meminfo *it = NULL; 54 - 55 - for (i = 0; i < sysmem.nr_banks; ++i) 56 - if (sysmem.bank[i].start <= start) 57 - it = sysmem.bank + i; 58 - else 59 - break; 60 - return it; 61 - } 62 - 63 - /* 64 - * Move all memory banks starting at 'from' to a new place at 'to', 65 - * adjust nr_banks accordingly. 66 - * Both 'from' and 'to' must be inside the sysmem.bank. 67 - * 68 - * Returns: 0 (success), -ENOMEM (not enough space in the sysmem.bank). 69 - */ 70 - static int __init move_banks(struct meminfo *to, struct meminfo *from) 71 - { 72 - unsigned n = sysmem.nr_banks - (from - sysmem.bank); 73 - 74 - if (to > from && to - from + sysmem.nr_banks > SYSMEM_BANKS_MAX) 75 - return -ENOMEM; 76 - if (to != from) 77 - memmove(to, from, n * sizeof(struct meminfo)); 78 - sysmem.nr_banks += to - from; 79 - return 0; 80 - } 81 - 82 - /* 83 - * Add new bank to sysmem. Resulting sysmem is the union of bytes of the 84 - * original sysmem and the new bank. 85 - * 86 - * Returns: 0 (success), < 0 (error) 87 - */ 88 - int __init add_sysmem_bank(unsigned long start, unsigned long end) 89 - { 90 - unsigned i; 91 - struct meminfo *it = NULL; 92 - unsigned long sz; 93 - unsigned long bank_sz = 0; 94 - 95 - if (start == end || 96 - (start < end) != (PAGE_ALIGN(start) < (end & PAGE_MASK))) { 97 - pr_warn("Ignoring small memory bank 0x%08lx size: %ld bytes\n", 98 - start, end - start); 99 - return -EINVAL; 100 - } 101 - 102 - start = PAGE_ALIGN(start); 103 - end &= PAGE_MASK; 104 - sz = end - start; 105 - 106 - it = find_bank(start); 107 - 108 - if (it) 109 - bank_sz = it->end - it->start; 110 - 111 - if (it && bank_sz >= start - it->start) { 112 - if (end - it->start > bank_sz) 113 - it->end = end; 114 - else 115 - return 0; 116 - } else { 117 - if (!it) 118 - it = sysmem.bank; 119 - else 120 - ++it; 121 - 122 - if (it - sysmem.bank < sysmem.nr_banks && 123 - it->start - start <= sz) { 124 - it->start = start; 125 - if (it->end - it->start < sz) 126 - it->end = end; 127 - else 128 - return 0; 129 - } else { 130 - if (move_banks(it + 1, it) < 0) { 131 - pr_warn("Ignoring memory bank 0x%08lx size %ld bytes\n", 132 - start, end - start); 133 - return -EINVAL; 134 - } 135 - it->start = start; 136 - it->end = end; 137 - return 0; 138 - } 139 - } 140 - sz = it->end - it->start; 141 - for (i = it + 1 - sysmem.bank; i < sysmem.nr_banks; ++i) 142 - if (sysmem.bank[i].start - it->start <= sz) { 143 - if (sz < sysmem.bank[i].end - it->start) 144 - it->end = sysmem.bank[i].end; 145 - } else { 146 - break; 147 - } 148 - 149 - move_banks(it + 1, sysmem.bank + i); 150 - return 0; 151 - } 152 - 153 - /* 154 - * mem_reserve(start, end, must_exist) 155 - * 156 - * Reserve some memory from the memory pool. 157 - * If must_exist is set and a part of the region being reserved does not exist 158 - * memory map is not altered. 159 - * 160 - * Parameters: 161 - * start Start of region, 162 - * end End of region, 163 - * must_exist Must exist in memory pool. 164 - * 165 - * Returns: 166 - * 0 (success) 167 - * < 0 (error) 168 - */ 169 - 170 - int __init mem_reserve(unsigned long start, unsigned long end, int must_exist) 171 - { 172 - struct meminfo *it; 173 - struct meminfo *rm = NULL; 174 - unsigned long sz; 175 - unsigned long bank_sz = 0; 176 - 177 - start = start & PAGE_MASK; 178 - end = PAGE_ALIGN(end); 179 - sz = end - start; 180 - if (!sz) 181 - return -EINVAL; 182 - 183 - it = find_bank(start); 184 - 185 - if (it) 186 - bank_sz = it->end - it->start; 187 - 188 - if ((!it || end - it->start > bank_sz) && must_exist) { 189 - pr_warn("mem_reserve: [0x%0lx, 0x%0lx) not in any region!\n", 190 - start, end); 191 - return -EINVAL; 192 - } 193 - 194 - if (it && start - it->start <= bank_sz) { 195 - if (start == it->start) { 196 - if (end - it->start < bank_sz) { 197 - it->start = end; 198 - return 0; 199 - } else { 200 - rm = it; 201 - } 202 - } else { 203 - it->end = start; 204 - if (end - it->start < bank_sz) 205 - return add_sysmem_bank(end, 206 - it->start + bank_sz); 207 - ++it; 208 - } 209 - } 210 - 211 - if (!it) 212 - it = sysmem.bank; 213 - 214 - for (; it < sysmem.bank + sysmem.nr_banks; ++it) { 215 - if (it->end - start <= sz) { 216 - if (!rm) 217 - rm = it; 218 - } else { 219 - if (it->start - start < sz) 220 - it->start = end; 221 - break; 222 - } 223 - } 224 - 225 - if (rm) 226 - move_banks(rm, it); 227 - 228 - return 0; 229 - } 230 - 231 34 232 35 /* 233 36 * Initialize the bootmem system and give it all low memory we have available. ··· 38 235 39 236 void __init bootmem_init(void) 40 237 { 41 - unsigned long pfn; 42 - unsigned long bootmap_start, bootmap_size; 43 - int i; 44 - 45 - /* Reserve all memory below PLATFORM_DEFAULT_MEM_START, as memory 238 + /* Reserve all memory below PHYS_OFFSET, as memory 46 239 * accounting doesn't work for pages below that address. 47 240 * 48 - * If PLATFORM_DEFAULT_MEM_START is zero reserve page at address 0: 241 + * If PHYS_OFFSET is zero reserve page at address 0: 49 242 * successfull allocations should never return NULL. 50 243 */ 51 - if (PLATFORM_DEFAULT_MEM_START) 52 - mem_reserve(0, PLATFORM_DEFAULT_MEM_START, 0); 244 + if (PHYS_OFFSET) 245 + memblock_reserve(0, PHYS_OFFSET); 53 246 else 54 - mem_reserve(0, 1, 0); 247 + memblock_reserve(0, 1); 55 248 56 - sysmem_dump(); 57 - max_low_pfn = max_pfn = 0; 58 - min_low_pfn = ~0; 249 + early_init_fdt_scan_reserved_mem(); 59 250 60 - for (i=0; i < sysmem.nr_banks; i++) { 61 - pfn = PAGE_ALIGN(sysmem.bank[i].start) >> PAGE_SHIFT; 62 - if (pfn < min_low_pfn) 63 - min_low_pfn = pfn; 64 - pfn = PAGE_ALIGN(sysmem.bank[i].end - 1) >> PAGE_SHIFT; 65 - if (pfn > max_pfn) 66 - max_pfn = pfn; 67 - } 68 - 69 - if (min_low_pfn > max_pfn) 251 + if (!memblock_phys_mem_size()) 70 252 panic("No memory found!\n"); 71 253 72 - max_low_pfn = max_pfn < MAX_MEM_PFN >> PAGE_SHIFT ? 73 - max_pfn : MAX_MEM_PFN >> PAGE_SHIFT; 254 + min_low_pfn = PFN_UP(memblock_start_of_DRAM()); 255 + min_low_pfn = max(min_low_pfn, PFN_UP(PHYS_OFFSET)); 256 + max_pfn = PFN_DOWN(memblock_end_of_DRAM()); 257 + max_low_pfn = min(max_pfn, MAX_LOW_PFN); 74 258 75 - /* Find an area to use for the bootmem bitmap. */ 259 + memblock_set_current_limit(PFN_PHYS(max_low_pfn)); 76 260 77 - bootmap_size = bootmem_bootmap_pages(max_low_pfn - min_low_pfn); 78 - bootmap_size <<= PAGE_SHIFT; 79 - bootmap_start = ~0; 80 - 81 - for (i=0; i<sysmem.nr_banks; i++) 82 - if (sysmem.bank[i].end - sysmem.bank[i].start >= bootmap_size) { 83 - bootmap_start = sysmem.bank[i].start; 84 - break; 85 - } 86 - 87 - if (bootmap_start == ~0UL) 88 - panic("Cannot find %ld bytes for bootmap\n", bootmap_size); 89 - 90 - /* Reserve the bootmem bitmap area */ 91 - 92 - mem_reserve(bootmap_start, bootmap_start + bootmap_size, 1); 93 - bootmap_size = init_bootmem_node(NODE_DATA(0), 94 - bootmap_start >> PAGE_SHIFT, 95 - min_low_pfn, 96 - max_low_pfn); 97 - 98 - /* Add all remaining memory pieces into the bootmem map */ 99 - 100 - for (i = 0; i < sysmem.nr_banks; i++) { 101 - if (sysmem.bank[i].start >> PAGE_SHIFT < max_low_pfn) { 102 - unsigned long end = min(max_low_pfn << PAGE_SHIFT, 103 - sysmem.bank[i].end); 104 - free_bootmem(sysmem.bank[i].start, 105 - end - sysmem.bank[i].start); 106 - } 107 - } 108 - 261 + memblock_dump_all(); 109 262 } 110 263 111 264 ··· 103 344 " fixmap : 0x%08lx - 0x%08lx (%5lu kB)\n" 104 345 #endif 105 346 #ifdef CONFIG_MMU 106 - " vmalloc : 0x%08x - 0x%08x (%5u MB)\n" 347 + " vmalloc : 0x%08lx - 0x%08lx (%5lu MB)\n" 107 348 #endif 108 349 " lowmem : 0x%08lx - 0x%08lx (%5lu MB)\n", 109 350 #ifdef CONFIG_HIGHMEM ··· 154 395 switch (*p) { 155 396 case '@': 156 397 start_at = memparse(p + 1, &p); 157 - add_sysmem_bank(start_at, start_at + mem_size); 398 + memblock_add(start_at, mem_size); 158 399 break; 159 400 160 401 case '$': 161 402 start_at = memparse(p + 1, &p); 162 - mem_reserve(start_at, start_at + mem_size, 0); 403 + memblock_reserve(start_at, mem_size); 163 404 break; 164 405 165 406 case 0: 166 - mem_reserve(mem_size, 0, 0); 407 + memblock_reserve(mem_size, -mem_size); 167 408 break; 168 409 169 410 default:
+5
arch/xtensa/platforms/iss/include/platform/simcall.h
··· 76 76 return ret; 77 77 } 78 78 79 + static inline int simc_exit(int exit_code) 80 + { 81 + return __simc(SYS_exit, exit_code, 0, 0); 82 + } 83 + 79 84 static inline int simc_open(const char *file, int flags, int mode) 80 85 { 81 86 return __simc(SYS_open, (int) file, flags, mode);
+6 -22
arch/xtensa/platforms/iss/setup.c
··· 32 32 #include <asm/platform.h> 33 33 #include <asm/bootparam.h> 34 34 35 + #include <platform/simcall.h> 36 + 35 37 36 38 void __init platform_init(bp_tag_t* bootparam) 37 39 { ··· 43 41 void platform_halt(void) 44 42 { 45 43 pr_info(" ** Called platform_halt() **\n"); 46 - __asm__ __volatile__("movi a2, 1\nsimcall\n"); 44 + simc_exit(0); 47 45 } 48 46 49 47 void platform_power_off(void) 50 48 { 51 49 pr_info(" ** Called platform_power_off() **\n"); 52 - __asm__ __volatile__("movi a2, 1\nsimcall\n"); 50 + simc_exit(0); 53 51 } 54 52 void platform_restart(void) 55 53 { 56 54 /* Flush and reset the mmu, simulate a processor reset, and 57 55 * jump to the reset vector. */ 58 - 59 - __asm__ __volatile__("movi a2, 15\n\t" 60 - "wsr a2, icountlevel\n\t" 61 - "movi a2, 0\n\t" 62 - "wsr a2, icount\n\t" 63 - #if XCHAL_NUM_IBREAK > 0 64 - "wsr a2, ibreakenable\n\t" 65 - #endif 66 - #if XCHAL_HAVE_LOOPS 67 - "wsr a2, lcount\n\t" 68 - #endif 69 - "movi a2, 0x1f\n\t" 70 - "wsr a2, ps\n\t" 71 - "isync\n\t" 72 - "jx %0\n\t" 73 - : 74 - : "a" (XCHAL_RESET_VECTOR_VADDR) 75 - : "a2"); 76 - 56 + cpu_reset(); 77 57 /* control never gets here */ 78 58 } 79 59 ··· 82 98 static int 83 99 iss_panic_event(struct notifier_block *this, unsigned long event, void *ptr) 84 100 { 85 - __asm__ __volatile__("movi a2, -1; simcall\n"); 101 + simc_exit(1); 86 102 return NOTIFY_DONE; 87 103 } 88 104
+1
arch/xtensa/platforms/iss/simdisk.c
··· 86 86 unsigned long io; 87 87 88 88 simc_lseek(dev->fd, offset, SEEK_SET); 89 + READ_ONCE(*buffer); 89 90 if (write) 90 91 io = simc_write(dev->fd, buffer, nbytes); 91 92 else
+1 -20
arch/xtensa/platforms/xt2000/setup.c
··· 64 64 { 65 65 /* Flush and reset the mmu, simulate a processor reset, and 66 66 * jump to the reset vector. */ 67 - 68 - __asm__ __volatile__ ("movi a2, 15\n\t" 69 - "wsr a2, icountlevel\n\t" 70 - "movi a2, 0\n\t" 71 - "wsr a2, icount\n\t" 72 - #if XCHAL_NUM_IBREAK > 0 73 - "wsr a2, ibreakenable\n\t" 74 - #endif 75 - #if XCHAL_HAVE_LOOPS 76 - "wsr a2, lcount\n\t" 77 - #endif 78 - "movi a2, 0x1f\n\t" 79 - "wsr a2, ps\n\t" 80 - "isync\n\t" 81 - "jx %0\n\t" 82 - : 83 - : "a" (XCHAL_RESET_VECTOR_VADDR) 84 - : "a2" 85 - ); 86 - 67 + cpu_reset(); 87 68 /* control never gets here */ 88 69 } 89 70
+44 -78
arch/xtensa/platforms/xtfpga/setup.c
··· 26 26 #include <linux/console.h> 27 27 #include <linux/delay.h> 28 28 #include <linux/of.h> 29 + #include <linux/clk-provider.h> 30 + #include <linux/of_address.h> 29 31 30 32 #include <asm/timex.h> 31 33 #include <asm/processor.h> ··· 56 54 { 57 55 /* Flush and reset the mmu, simulate a processor reset, and 58 56 * jump to the reset vector. */ 59 - 60 - 61 - __asm__ __volatile__ ("movi a2, 15\n\t" 62 - "wsr a2, icountlevel\n\t" 63 - "movi a2, 0\n\t" 64 - "wsr a2, icount\n\t" 65 - #if XCHAL_NUM_IBREAK > 0 66 - "wsr a2, ibreakenable\n\t" 67 - #endif 68 - #if XCHAL_HAVE_LOOPS 69 - "wsr a2, lcount\n\t" 70 - #endif 71 - "movi a2, 0x1f\n\t" 72 - "wsr a2, ps\n\t" 73 - "isync\n\t" 74 - "jx %0\n\t" 75 - : 76 - : "a" (XCHAL_RESET_VECTOR_VADDR) 77 - : "a2" 78 - ); 79 - 57 + cpu_reset(); 80 58 /* control never gets here */ 81 59 } 82 60 ··· 64 82 { 65 83 } 66 84 85 + /* early initialization */ 86 + 87 + void __init platform_init(bp_tag_t *first) 88 + { 89 + } 90 + 91 + /* Heartbeat. */ 92 + 93 + void platform_heartbeat(void) 94 + { 95 + } 96 + 97 + #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT 98 + 99 + void __init platform_calibrate_ccount(void) 100 + { 101 + ccount_freq = *(long *)XTFPGA_CLKFRQ_VADDR; 102 + } 103 + 104 + #endif 105 + 67 106 #ifdef CONFIG_OF 68 107 69 - static void __init update_clock_frequency(struct device_node *node) 108 + static void __init xtfpga_clk_setup(struct device_node *np) 70 109 { 71 - struct property *newfreq; 110 + void __iomem *base = of_iomap(np, 0); 111 + struct clk *clk; 72 112 u32 freq; 73 113 74 - if (!of_property_read_u32(node, "clock-frequency", &freq) && freq != 0) 75 - return; 76 - 77 - newfreq = kzalloc(sizeof(*newfreq) + sizeof(u32), GFP_KERNEL); 78 - if (!newfreq) 79 - return; 80 - newfreq->value = newfreq + 1; 81 - newfreq->length = sizeof(freq); 82 - newfreq->name = kstrdup("clock-frequency", GFP_KERNEL); 83 - if (!newfreq->name) { 84 - kfree(newfreq); 114 + if (!base) { 115 + pr_err("%s: invalid address\n", np->name); 85 116 return; 86 117 } 87 118 88 - *(u32 *)newfreq->value = cpu_to_be32(*(u32 *)XTFPGA_CLKFRQ_VADDR); 89 - of_update_property(node, newfreq); 119 + freq = __raw_readl(base); 120 + iounmap(base); 121 + clk = clk_register_fixed_rate(NULL, np->name, NULL, 0, freq); 122 + 123 + if (IS_ERR(clk)) { 124 + pr_err("%s: clk registration failed\n", np->name); 125 + return; 126 + } 127 + 128 + if (of_clk_add_provider(np, of_clk_src_simple_get, clk)) { 129 + pr_err("%s: clk provider registration failed\n", np->name); 130 + return; 131 + } 90 132 } 133 + CLK_OF_DECLARE(xtfpga_clk, "cdns,xtfpga-clock", xtfpga_clk_setup); 91 134 92 135 #define MAC_LEN 6 93 136 static void __init update_local_mac(struct device_node *node) ··· 144 137 145 138 static int __init machine_setup(void) 146 139 { 147 - struct device_node *clock; 148 140 struct device_node *eth = NULL; 149 - 150 - for_each_node_by_name(clock, "main-oscillator") 151 - update_clock_frequency(clock); 152 141 153 142 if ((eth = of_find_compatible_node(eth, NULL, "opencores,ethoc"))) 154 143 update_local_mac(eth); ··· 152 149 } 153 150 arch_initcall(machine_setup); 154 151 155 - #endif 156 - 157 - /* early initialization */ 158 - 159 - void __init platform_init(bp_tag_t *first) 160 - { 161 - } 162 - 163 - /* Heartbeat. */ 164 - 165 - void platform_heartbeat(void) 166 - { 167 - } 168 - 169 - #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT 170 - 171 - void __init platform_calibrate_ccount(void) 172 - { 173 - long clk_freq = 0; 174 - #ifdef CONFIG_OF 175 - struct device_node *cpu = 176 - of_find_compatible_node(NULL, NULL, "cdns,xtensa-cpu"); 177 - if (cpu) { 178 - u32 freq; 179 - update_clock_frequency(cpu); 180 - if (!of_property_read_u32(cpu, "clock-frequency", &freq)) 181 - clk_freq = freq; 182 - } 183 - #endif 184 - if (!clk_freq) 185 - clk_freq = *(long *)XTFPGA_CLKFRQ_VADDR; 186 - 187 - ccount_freq = clk_freq; 188 - } 189 - 190 - #endif 191 - 192 - #ifndef CONFIG_OF 152 + #else 193 153 194 154 #include <linux/serial_8250.h> 195 155 #include <linux/if.h>
+575
arch/xtensa/variants/csp/include/variant/core.h
··· 1 + /* 2 + * xtensa/config/core-isa.h -- HAL definitions that are dependent on Xtensa 3 + * processor CORE configuration 4 + * 5 + * See <xtensa/config/core.h>, which includes this file, for more details. 6 + */ 7 + 8 + /* Xtensa processor core configuration information. 9 + 10 + Copyright (c) 1999-2015 Tensilica Inc. 11 + 12 + Permission is hereby granted, free of charge, to any person obtaining 13 + a copy of this software and associated documentation files (the 14 + "Software"), to deal in the Software without restriction, including 15 + without limitation the rights to use, copy, modify, merge, publish, 16 + distribute, sublicense, and/or sell copies of the Software, and to 17 + permit persons to whom the Software is furnished to do so, subject to 18 + the following conditions: 19 + 20 + The above copyright notice and this permission notice shall be included 21 + in all copies or substantial portions of the Software. 22 + 23 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 24 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 25 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 26 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 27 + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 28 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 29 + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 30 + 31 + #ifndef _XTENSA_CORE_CONFIGURATION_H 32 + #define _XTENSA_CORE_CONFIGURATION_H 33 + 34 + 35 + /**************************************************************************** 36 + Parameters Useful for Any Code, USER or PRIVILEGED 37 + ****************************************************************************/ 38 + 39 + /* 40 + * Note: Macros of the form XCHAL_HAVE_*** have a value of 1 if the option is 41 + * configured, and a value of 0 otherwise. These macros are always defined. 42 + */ 43 + 44 + 45 + /*---------------------------------------------------------------------- 46 + ISA 47 + ----------------------------------------------------------------------*/ 48 + 49 + #define XCHAL_HAVE_BE 0 /* big-endian byte ordering */ 50 + #define XCHAL_HAVE_WINDOWED 1 /* windowed registers option */ 51 + #define XCHAL_NUM_AREGS 32 /* num of physical addr regs */ 52 + #define XCHAL_NUM_AREGS_LOG2 5 /* log2(XCHAL_NUM_AREGS) */ 53 + #define XCHAL_MAX_INSTRUCTION_SIZE 8 /* max instr bytes (3..8) */ 54 + #define XCHAL_HAVE_DEBUG 1 /* debug option */ 55 + #define XCHAL_HAVE_DENSITY 1 /* 16-bit instructions */ 56 + #define XCHAL_HAVE_LOOPS 1 /* zero-overhead loops */ 57 + #define XCHAL_LOOP_BUFFER_SIZE 0 /* zero-ov. loop instr buffer size */ 58 + #define XCHAL_HAVE_NSA 1 /* NSA/NSAU instructions */ 59 + #define XCHAL_HAVE_MINMAX 1 /* MIN/MAX instructions */ 60 + #define XCHAL_HAVE_SEXT 1 /* SEXT instruction */ 61 + #define XCHAL_HAVE_DEPBITS 0 /* DEPBITS instruction */ 62 + #define XCHAL_HAVE_CLAMPS 1 /* CLAMPS instruction */ 63 + #define XCHAL_HAVE_MUL16 1 /* MUL16S/MUL16U instructions */ 64 + #define XCHAL_HAVE_MUL32 1 /* MULL instruction */ 65 + #define XCHAL_HAVE_MUL32_HIGH 1 /* MULUH/MULSH instructions */ 66 + #define XCHAL_HAVE_DIV32 1 /* QUOS/QUOU/REMS/REMU instructions */ 67 + #define XCHAL_HAVE_L32R 1 /* L32R instruction */ 68 + #define XCHAL_HAVE_ABSOLUTE_LITERALS 0 /* non-PC-rel (extended) L32R */ 69 + #define XCHAL_HAVE_CONST16 0 /* CONST16 instruction */ 70 + #define XCHAL_HAVE_ADDX 1 /* ADDX#/SUBX# instructions */ 71 + #define XCHAL_HAVE_WIDE_BRANCHES 0 /* B*.W18 or B*.W15 instr's */ 72 + #define XCHAL_HAVE_PREDICTED_BRANCHES 0 /* B[EQ/EQZ/NE/NEZ]T instr's */ 73 + #define XCHAL_HAVE_CALL4AND12 1 /* (obsolete option) */ 74 + #define XCHAL_HAVE_ABS 1 /* ABS instruction */ 75 + /*#define XCHAL_HAVE_POPC 0*/ /* POPC instruction */ 76 + /*#define XCHAL_HAVE_CRC 0*/ /* CRC instruction */ 77 + #define XCHAL_HAVE_RELEASE_SYNC 1 /* L32AI/S32RI instructions */ 78 + #define XCHAL_HAVE_S32C1I 1 /* S32C1I instruction */ 79 + #define XCHAL_HAVE_SPECULATION 0 /* speculation */ 80 + #define XCHAL_HAVE_FULL_RESET 1 /* all regs/state reset */ 81 + #define XCHAL_NUM_CONTEXTS 1 /* */ 82 + #define XCHAL_NUM_MISC_REGS 4 /* num of scratch regs (0..4) */ 83 + #define XCHAL_HAVE_TAP_MASTER 0 /* JTAG TAP control instr's */ 84 + #define XCHAL_HAVE_PRID 1 /* processor ID register */ 85 + #define XCHAL_HAVE_EXTERN_REGS 1 /* WER/RER instructions */ 86 + #define XCHAL_HAVE_MX 0 /* MX core (Tensilica internal) */ 87 + #define XCHAL_HAVE_MP_INTERRUPTS 0 /* interrupt distributor port */ 88 + #define XCHAL_HAVE_MP_RUNSTALL 0 /* core RunStall control port */ 89 + #define XCHAL_HAVE_PSO 0 /* Power Shut-Off */ 90 + #define XCHAL_HAVE_PSO_CDM 0 /* core/debug/mem pwr domains */ 91 + #define XCHAL_HAVE_PSO_FULL_RETENTION 0 /* all regs preserved on PSO */ 92 + #define XCHAL_HAVE_THREADPTR 1 /* THREADPTR register */ 93 + #define XCHAL_HAVE_BOOLEANS 1 /* boolean registers */ 94 + #define XCHAL_HAVE_CP 1 /* CPENABLE reg (coprocessor) */ 95 + #define XCHAL_CP_MAXCFG 8 /* max allowed cp id plus one */ 96 + #define XCHAL_HAVE_MAC16 1 /* MAC16 package */ 97 + 98 + #define XCHAL_HAVE_FUSION 0 /* Fusion*/ 99 + #define XCHAL_HAVE_FUSION_FP 0 /* Fusion FP option */ 100 + #define XCHAL_HAVE_FUSION_LOW_POWER 0 /* Fusion Low Power option */ 101 + #define XCHAL_HAVE_FUSION_AES 0 /* Fusion BLE/Wifi AES-128 CCM option */ 102 + #define XCHAL_HAVE_FUSION_CONVENC 0 /* Fusion Conv Encode option */ 103 + #define XCHAL_HAVE_FUSION_LFSR_CRC 0 /* Fusion LFSR-CRC option */ 104 + #define XCHAL_HAVE_FUSION_BITOPS 0 /* Fusion Bit Operations Support option */ 105 + #define XCHAL_HAVE_FUSION_AVS 0 /* Fusion AVS option */ 106 + #define XCHAL_HAVE_FUSION_16BIT_BASEBAND 0 /* Fusion 16-bit Baseband option */ 107 + #define XCHAL_HAVE_HIFIPRO 0 /* HiFiPro Audio Engine pkg */ 108 + #define XCHAL_HAVE_HIFI4 0 /* HiFi4 Audio Engine pkg */ 109 + #define XCHAL_HAVE_HIFI4_VFPU 0 /* HiFi4 Audio Engine VFPU option */ 110 + #define XCHAL_HAVE_HIFI3 0 /* HiFi3 Audio Engine pkg */ 111 + #define XCHAL_HAVE_HIFI3_VFPU 0 /* HiFi3 Audio Engine VFPU option */ 112 + #define XCHAL_HAVE_HIFI2 0 /* HiFi2 Audio Engine pkg */ 113 + #define XCHAL_HAVE_HIFI2EP 0 /* HiFi2EP */ 114 + #define XCHAL_HAVE_HIFI_MINI 0 115 + 116 + 117 + #define XCHAL_HAVE_VECTORFPU2005 0 /* vector or user floating-point pkg */ 118 + #define XCHAL_HAVE_USER_DPFPU 0 /* user DP floating-point pkg */ 119 + #define XCHAL_HAVE_USER_SPFPU 0 /* user DP floating-point pkg */ 120 + #define XCHAL_HAVE_FP 0 /* single prec floating point */ 121 + #define XCHAL_HAVE_FP_DIV 0 /* FP with DIV instructions */ 122 + #define XCHAL_HAVE_FP_RECIP 0 /* FP with RECIP instructions */ 123 + #define XCHAL_HAVE_FP_SQRT 0 /* FP with SQRT instructions */ 124 + #define XCHAL_HAVE_FP_RSQRT 0 /* FP with RSQRT instructions */ 125 + #define XCHAL_HAVE_DFP 0 /* double precision FP pkg */ 126 + #define XCHAL_HAVE_DFP_DIV 0 /* DFP with DIV instructions */ 127 + #define XCHAL_HAVE_DFP_RECIP 0 /* DFP with RECIP instructions*/ 128 + #define XCHAL_HAVE_DFP_SQRT 0 /* DFP with SQRT instructions */ 129 + #define XCHAL_HAVE_DFP_RSQRT 0 /* DFP with RSQRT instructions*/ 130 + #define XCHAL_HAVE_DFP_ACCEL 0 /* double precision FP acceleration pkg */ 131 + #define XCHAL_HAVE_DFP_accel XCHAL_HAVE_DFP_ACCEL /* for backward compatibility */ 132 + 133 + #define XCHAL_HAVE_DFPU_SINGLE_ONLY 0 /* DFPU Coprocessor, single precision only */ 134 + #define XCHAL_HAVE_DFPU_SINGLE_DOUBLE 0 /* DFPU Coprocessor, single and double precision */ 135 + #define XCHAL_HAVE_VECTRA1 0 /* Vectra I pkg */ 136 + #define XCHAL_HAVE_VECTRALX 0 /* Vectra LX pkg */ 137 + #define XCHAL_HAVE_PDX4 0 /* PDX4 */ 138 + #define XCHAL_HAVE_CONNXD2 0 /* ConnX D2 pkg */ 139 + #define XCHAL_HAVE_CONNXD2_DUALLSFLIX 0 /* ConnX D2 & Dual LoadStore Flix */ 140 + #define XCHAL_HAVE_BBE16 0 /* ConnX BBE16 pkg */ 141 + #define XCHAL_HAVE_BBE16_RSQRT 0 /* BBE16 & vector recip sqrt */ 142 + #define XCHAL_HAVE_BBE16_VECDIV 0 /* BBE16 & vector divide */ 143 + #define XCHAL_HAVE_BBE16_DESPREAD 0 /* BBE16 & despread */ 144 + #define XCHAL_HAVE_BBENEP 0 /* ConnX BBENEP pkgs */ 145 + #define XCHAL_HAVE_BSP3 0 /* ConnX BSP3 pkg */ 146 + #define XCHAL_HAVE_BSP3_TRANSPOSE 0 /* BSP3 & transpose32x32 */ 147 + #define XCHAL_HAVE_SSP16 0 /* ConnX SSP16 pkg */ 148 + #define XCHAL_HAVE_SSP16_VITERBI 0 /* SSP16 & viterbi */ 149 + #define XCHAL_HAVE_TURBO16 0 /* ConnX Turbo16 pkg */ 150 + #define XCHAL_HAVE_BBP16 0 /* ConnX BBP16 pkg */ 151 + #define XCHAL_HAVE_FLIX3 0 /* basic 3-way FLIX option */ 152 + #define XCHAL_HAVE_GRIVPEP 0 /* GRIVPEP is General Release of IVPEP */ 153 + #define XCHAL_HAVE_GRIVPEP_HISTOGRAM 0 /* Histogram option on GRIVPEP */ 154 + 155 + 156 + /*---------------------------------------------------------------------- 157 + MISC 158 + ----------------------------------------------------------------------*/ 159 + 160 + #define XCHAL_NUM_LOADSTORE_UNITS 1 /* load/store units */ 161 + #define XCHAL_NUM_WRITEBUFFER_ENTRIES 8 /* size of write buffer */ 162 + #define XCHAL_INST_FETCH_WIDTH 8 /* instr-fetch width in bytes */ 163 + #define XCHAL_DATA_WIDTH 16 /* data width in bytes */ 164 + #define XCHAL_DATA_PIPE_DELAY 1 /* d-side pipeline delay 165 + (1 = 5-stage, 2 = 7-stage) */ 166 + #define XCHAL_CLOCK_GATING_GLOBAL 0 /* global clock gating */ 167 + #define XCHAL_CLOCK_GATING_FUNCUNIT 0 /* funct. unit clock gating */ 168 + /* In T1050, applies to selected core load and store instructions (see ISA): */ 169 + #define XCHAL_UNALIGNED_LOAD_EXCEPTION 1 /* unaligned loads cause exc. */ 170 + #define XCHAL_UNALIGNED_STORE_EXCEPTION 1 /* unaligned stores cause exc.*/ 171 + #define XCHAL_UNALIGNED_LOAD_HW 0 /* unaligned loads work in hw */ 172 + #define XCHAL_UNALIGNED_STORE_HW 0 /* unaligned stores work in hw*/ 173 + 174 + #define XCHAL_SW_VERSION 1100002 /* sw version of this header */ 175 + 176 + #define XCHAL_CORE_ID "xt_lnx" /* alphanum core name 177 + (CoreID) set in the Xtensa 178 + Processor Generator */ 179 + 180 + #define XCHAL_BUILD_UNIQUE_ID 0x00057D54 /* 22-bit sw build ID */ 181 + 182 + /* 183 + * These definitions describe the hardware targeted by this software. 184 + */ 185 + #define XCHAL_HW_CONFIGID0 0xC1B3FFFE /* ConfigID hi 32 bits*/ 186 + #define XCHAL_HW_CONFIGID1 0x1C857D54 /* ConfigID lo 32 bits*/ 187 + #define XCHAL_HW_VERSION_NAME "LX6.0.2" /* full version name */ 188 + #define XCHAL_HW_VERSION_MAJOR 2600 /* major ver# of targeted hw */ 189 + #define XCHAL_HW_VERSION_MINOR 2 /* minor ver# of targeted hw */ 190 + #define XCHAL_HW_VERSION 260002 /* major*100+minor */ 191 + #define XCHAL_HW_REL_LX6 1 192 + #define XCHAL_HW_REL_LX6_0 1 193 + #define XCHAL_HW_REL_LX6_0_2 1 194 + #define XCHAL_HW_CONFIGID_RELIABLE 1 195 + /* If software targets a *range* of hardware versions, these are the bounds: */ 196 + #define XCHAL_HW_MIN_VERSION_MAJOR 2600 /* major v of earliest tgt hw */ 197 + #define XCHAL_HW_MIN_VERSION_MINOR 2 /* minor v of earliest tgt hw */ 198 + #define XCHAL_HW_MIN_VERSION 260002 /* earliest targeted hw */ 199 + #define XCHAL_HW_MAX_VERSION_MAJOR 2600 /* major v of latest tgt hw */ 200 + #define XCHAL_HW_MAX_VERSION_MINOR 2 /* minor v of latest tgt hw */ 201 + #define XCHAL_HW_MAX_VERSION 260002 /* latest targeted hw */ 202 + 203 + 204 + /*---------------------------------------------------------------------- 205 + CACHE 206 + ----------------------------------------------------------------------*/ 207 + 208 + #define XCHAL_ICACHE_LINESIZE 64 /* I-cache line size in bytes */ 209 + #define XCHAL_DCACHE_LINESIZE 64 /* D-cache line size in bytes */ 210 + #define XCHAL_ICACHE_LINEWIDTH 6 /* log2(I line size in bytes) */ 211 + #define XCHAL_DCACHE_LINEWIDTH 6 /* log2(D line size in bytes) */ 212 + 213 + #define XCHAL_ICACHE_SIZE 65536 /* I-cache size in bytes or 0 */ 214 + #define XCHAL_DCACHE_SIZE 16384 /* D-cache size in bytes or 0 */ 215 + 216 + #define XCHAL_DCACHE_IS_WRITEBACK 1 /* writeback feature */ 217 + #define XCHAL_DCACHE_IS_COHERENT 0 /* MP coherence feature */ 218 + 219 + #define XCHAL_HAVE_PREFETCH 0 /* PREFCTL register */ 220 + #define XCHAL_HAVE_PREFETCH_L1 0 /* prefetch to L1 dcache */ 221 + #define XCHAL_PREFETCH_CASTOUT_LINES 0 /* dcache pref. castout bufsz */ 222 + #define XCHAL_PREFETCH_ENTRIES 0 /* cache prefetch entries */ 223 + #define XCHAL_PREFETCH_BLOCK_ENTRIES 0 /* prefetch block streams */ 224 + #define XCHAL_HAVE_CACHE_BLOCKOPS 0 /* block prefetch for caches */ 225 + #define XCHAL_HAVE_ICACHE_TEST 1 /* Icache test instructions */ 226 + #define XCHAL_HAVE_DCACHE_TEST 1 /* Dcache test instructions */ 227 + #define XCHAL_HAVE_ICACHE_DYN_WAYS 0 /* Icache dynamic way support */ 228 + #define XCHAL_HAVE_DCACHE_DYN_WAYS 0 /* Dcache dynamic way support */ 229 + 230 + 231 + 232 + 233 + /**************************************************************************** 234 + Parameters Useful for PRIVILEGED (Supervisory or Non-Virtualized) Code 235 + ****************************************************************************/ 236 + 237 + 238 + #ifndef XTENSA_HAL_NON_PRIVILEGED_ONLY 239 + 240 + /*---------------------------------------------------------------------- 241 + CACHE 242 + ----------------------------------------------------------------------*/ 243 + 244 + #define XCHAL_HAVE_PIF 1 /* any outbound PIF present */ 245 + 246 + /* If present, cache size in bytes == (ways * 2^(linewidth + setwidth)). */ 247 + 248 + /* Number of cache sets in log2(lines per way): */ 249 + #define XCHAL_ICACHE_SETWIDTH 8 250 + #define XCHAL_DCACHE_SETWIDTH 6 251 + 252 + /* Cache set associativity (number of ways): */ 253 + #define XCHAL_ICACHE_WAYS 4 254 + #define XCHAL_DCACHE_WAYS 4 255 + 256 + /* Cache features: */ 257 + #define XCHAL_ICACHE_LINE_LOCKABLE 1 258 + #define XCHAL_DCACHE_LINE_LOCKABLE 1 259 + #define XCHAL_ICACHE_ECC_PARITY 0 260 + #define XCHAL_DCACHE_ECC_PARITY 0 261 + 262 + /* Cache access size in bytes (affects operation of SICW instruction): */ 263 + #define XCHAL_ICACHE_ACCESS_SIZE 16 264 + #define XCHAL_DCACHE_ACCESS_SIZE 16 265 + 266 + #define XCHAL_DCACHE_BANKS 1 /* number of banks */ 267 + 268 + /* Number of encoded cache attr bits (see <xtensa/hal.h> for decoded bits): */ 269 + #define XCHAL_CA_BITS 4 270 + 271 + /* Whether MEMCTL register has anything useful */ 272 + #define XCHAL_USE_MEMCTL (((XCHAL_LOOP_BUFFER_SIZE > 0) || \ 273 + XCHAL_DCACHE_IS_COHERENT || \ 274 + XCHAL_HAVE_ICACHE_DYN_WAYS || \ 275 + XCHAL_HAVE_DCACHE_DYN_WAYS) && \ 276 + (XCHAL_HW_MIN_VERSION >= XTENSA_HWVERSION_RE_2012_0)) 277 + 278 + 279 + /*---------------------------------------------------------------------- 280 + INTERNAL I/D RAM/ROMs and XLMI 281 + ----------------------------------------------------------------------*/ 282 + 283 + #define XCHAL_NUM_INSTROM 0 /* number of core instr. ROMs */ 284 + #define XCHAL_NUM_INSTRAM 0 /* number of core instr. RAMs */ 285 + #define XCHAL_NUM_DATAROM 0 /* number of core data ROMs */ 286 + #define XCHAL_NUM_DATARAM 0 /* number of core data RAMs */ 287 + #define XCHAL_NUM_URAM 0 /* number of core unified RAMs*/ 288 + #define XCHAL_NUM_XLMI 0 /* number of core XLMI ports */ 289 + 290 + #define XCHAL_HAVE_IMEM_LOADSTORE 1 /* can load/store to IROM/IRAM*/ 291 + 292 + 293 + /*---------------------------------------------------------------------- 294 + INTERRUPTS and TIMERS 295 + ----------------------------------------------------------------------*/ 296 + 297 + #define XCHAL_HAVE_INTERRUPTS 1 /* interrupt option */ 298 + #define XCHAL_HAVE_HIGHPRI_INTERRUPTS 1 /* med/high-pri. interrupts */ 299 + #define XCHAL_HAVE_NMI 1 /* non-maskable interrupt */ 300 + #define XCHAL_HAVE_CCOUNT 1 /* CCOUNT reg. (timer option) */ 301 + #define XCHAL_NUM_TIMERS 3 /* number of CCOMPAREn regs */ 302 + #define XCHAL_NUM_INTERRUPTS 22 /* number of interrupts */ 303 + #define XCHAL_NUM_INTERRUPTS_LOG2 5 /* ceil(log2(NUM_INTERRUPTS)) */ 304 + #define XCHAL_NUM_EXTINTERRUPTS 16 /* num of external interrupts */ 305 + #define XCHAL_NUM_INTLEVELS 6 /* number of interrupt levels 306 + (not including level zero) */ 307 + #define XCHAL_EXCM_LEVEL 3 /* level masked by PS.EXCM */ 308 + /* (always 1 in XEA1; levels 2 .. EXCM_LEVEL are "medium priority") */ 309 + 310 + /* Masks of interrupts at each interrupt level: */ 311 + #define XCHAL_INTLEVEL1_MASK 0x001F00BF 312 + #define XCHAL_INTLEVEL2_MASK 0x00001140 313 + #define XCHAL_INTLEVEL3_MASK 0x00200E00 314 + #define XCHAL_INTLEVEL4_MASK 0x00008000 315 + #define XCHAL_INTLEVEL5_MASK 0x00002000 316 + #define XCHAL_INTLEVEL6_MASK 0x00000000 317 + #define XCHAL_INTLEVEL7_MASK 0x00004000 318 + 319 + /* Masks of interrupts at each range 1..n of interrupt levels: */ 320 + #define XCHAL_INTLEVEL1_ANDBELOW_MASK 0x001F00BF 321 + #define XCHAL_INTLEVEL2_ANDBELOW_MASK 0x001F11FF 322 + #define XCHAL_INTLEVEL3_ANDBELOW_MASK 0x003F1FFF 323 + #define XCHAL_INTLEVEL4_ANDBELOW_MASK 0x003F9FFF 324 + #define XCHAL_INTLEVEL5_ANDBELOW_MASK 0x003FBFFF 325 + #define XCHAL_INTLEVEL6_ANDBELOW_MASK 0x003FBFFF 326 + #define XCHAL_INTLEVEL7_ANDBELOW_MASK 0x003FFFFF 327 + 328 + /* Level of each interrupt: */ 329 + #define XCHAL_INT0_LEVEL 1 330 + #define XCHAL_INT1_LEVEL 1 331 + #define XCHAL_INT2_LEVEL 1 332 + #define XCHAL_INT3_LEVEL 1 333 + #define XCHAL_INT4_LEVEL 1 334 + #define XCHAL_INT5_LEVEL 1 335 + #define XCHAL_INT6_LEVEL 2 336 + #define XCHAL_INT7_LEVEL 1 337 + #define XCHAL_INT8_LEVEL 2 338 + #define XCHAL_INT9_LEVEL 3 339 + #define XCHAL_INT10_LEVEL 3 340 + #define XCHAL_INT11_LEVEL 3 341 + #define XCHAL_INT12_LEVEL 2 342 + #define XCHAL_INT13_LEVEL 5 343 + #define XCHAL_INT14_LEVEL 7 344 + #define XCHAL_INT15_LEVEL 4 345 + #define XCHAL_INT16_LEVEL 1 346 + #define XCHAL_INT17_LEVEL 1 347 + #define XCHAL_INT18_LEVEL 1 348 + #define XCHAL_INT19_LEVEL 1 349 + #define XCHAL_INT20_LEVEL 1 350 + #define XCHAL_INT21_LEVEL 3 351 + #define XCHAL_DEBUGLEVEL 6 /* debug interrupt level */ 352 + #define XCHAL_HAVE_DEBUG_EXTERN_INT 1 /* OCD external db interrupt */ 353 + #define XCHAL_NMILEVEL 7 /* NMI "level" (for use with 354 + EXCSAVE/EPS/EPC_n, RFI n) */ 355 + 356 + /* Type of each interrupt: */ 357 + #define XCHAL_INT0_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 358 + #define XCHAL_INT1_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 359 + #define XCHAL_INT2_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 360 + #define XCHAL_INT3_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 361 + #define XCHAL_INT4_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 362 + #define XCHAL_INT5_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 363 + #define XCHAL_INT6_TYPE XTHAL_INTTYPE_TIMER 364 + #define XCHAL_INT7_TYPE XTHAL_INTTYPE_SOFTWARE 365 + #define XCHAL_INT8_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 366 + #define XCHAL_INT9_TYPE XTHAL_INTTYPE_EXTERN_LEVEL 367 + #define XCHAL_INT10_TYPE XTHAL_INTTYPE_TIMER 368 + #define XCHAL_INT11_TYPE XTHAL_INTTYPE_SOFTWARE 369 + #define XCHAL_INT12_TYPE XTHAL_INTTYPE_EXTERN_EDGE 370 + #define XCHAL_INT13_TYPE XTHAL_INTTYPE_TIMER 371 + #define XCHAL_INT14_TYPE XTHAL_INTTYPE_NMI 372 + #define XCHAL_INT15_TYPE XTHAL_INTTYPE_PROFILING 373 + #define XCHAL_INT16_TYPE XTHAL_INTTYPE_EXTERN_EDGE 374 + #define XCHAL_INT17_TYPE XTHAL_INTTYPE_EXTERN_EDGE 375 + #define XCHAL_INT18_TYPE XTHAL_INTTYPE_EXTERN_EDGE 376 + #define XCHAL_INT19_TYPE XTHAL_INTTYPE_EXTERN_EDGE 377 + #define XCHAL_INT20_TYPE XTHAL_INTTYPE_EXTERN_EDGE 378 + #define XCHAL_INT21_TYPE XTHAL_INTTYPE_EXTERN_EDGE 379 + 380 + /* Masks of interrupts for each type of interrupt: */ 381 + #define XCHAL_INTTYPE_MASK_UNCONFIGURED 0xFFC00000 382 + #define XCHAL_INTTYPE_MASK_SOFTWARE 0x00000880 383 + #define XCHAL_INTTYPE_MASK_EXTERN_EDGE 0x003F1000 384 + #define XCHAL_INTTYPE_MASK_EXTERN_LEVEL 0x0000033F 385 + #define XCHAL_INTTYPE_MASK_TIMER 0x00002440 386 + #define XCHAL_INTTYPE_MASK_NMI 0x00004000 387 + #define XCHAL_INTTYPE_MASK_WRITE_ERROR 0x00000000 388 + #define XCHAL_INTTYPE_MASK_PROFILING 0x00008000 389 + 390 + /* Interrupt numbers assigned to specific interrupt sources: */ 391 + #define XCHAL_TIMER0_INTERRUPT 6 /* CCOMPARE0 */ 392 + #define XCHAL_TIMER1_INTERRUPT 10 /* CCOMPARE1 */ 393 + #define XCHAL_TIMER2_INTERRUPT 13 /* CCOMPARE2 */ 394 + #define XCHAL_TIMER3_INTERRUPT XTHAL_TIMER_UNCONFIGURED 395 + #define XCHAL_NMI_INTERRUPT 14 /* non-maskable interrupt */ 396 + #define XCHAL_PROFILING_INTERRUPT 15 /* profiling interrupt */ 397 + 398 + /* Interrupt numbers for levels at which only one interrupt is configured: */ 399 + #define XCHAL_INTLEVEL4_NUM 15 400 + #define XCHAL_INTLEVEL5_NUM 13 401 + #define XCHAL_INTLEVEL7_NUM 14 402 + /* (There are many interrupts each at level(s) 1, 2, 3.) */ 403 + 404 + 405 + /* 406 + * External interrupt mapping. 407 + * These macros describe how Xtensa processor interrupt numbers 408 + * (as numbered internally, eg. in INTERRUPT and INTENABLE registers) 409 + * map to external BInterrupt<n> pins, for those interrupts 410 + * configured as external (level-triggered, edge-triggered, or NMI). 411 + * See the Xtensa processor databook for more details. 412 + */ 413 + 414 + /* Core interrupt numbers mapped to each EXTERNAL BInterrupt pin number: */ 415 + #define XCHAL_EXTINT0_NUM 0 /* (intlevel 1) */ 416 + #define XCHAL_EXTINT1_NUM 1 /* (intlevel 1) */ 417 + #define XCHAL_EXTINT2_NUM 2 /* (intlevel 1) */ 418 + #define XCHAL_EXTINT3_NUM 3 /* (intlevel 1) */ 419 + #define XCHAL_EXTINT4_NUM 4 /* (intlevel 1) */ 420 + #define XCHAL_EXTINT5_NUM 5 /* (intlevel 1) */ 421 + #define XCHAL_EXTINT6_NUM 8 /* (intlevel 2) */ 422 + #define XCHAL_EXTINT7_NUM 9 /* (intlevel 3) */ 423 + #define XCHAL_EXTINT8_NUM 12 /* (intlevel 2) */ 424 + #define XCHAL_EXTINT9_NUM 14 /* (intlevel 7) */ 425 + #define XCHAL_EXTINT10_NUM 16 /* (intlevel 1) */ 426 + #define XCHAL_EXTINT11_NUM 17 /* (intlevel 1) */ 427 + #define XCHAL_EXTINT12_NUM 18 /* (intlevel 1) */ 428 + #define XCHAL_EXTINT13_NUM 19 /* (intlevel 1) */ 429 + #define XCHAL_EXTINT14_NUM 20 /* (intlevel 1) */ 430 + #define XCHAL_EXTINT15_NUM 21 /* (intlevel 3) */ 431 + /* EXTERNAL BInterrupt pin numbers mapped to each core interrupt number: */ 432 + #define XCHAL_INT0_EXTNUM 0 /* (intlevel 1) */ 433 + #define XCHAL_INT1_EXTNUM 1 /* (intlevel 1) */ 434 + #define XCHAL_INT2_EXTNUM 2 /* (intlevel 1) */ 435 + #define XCHAL_INT3_EXTNUM 3 /* (intlevel 1) */ 436 + #define XCHAL_INT4_EXTNUM 4 /* (intlevel 1) */ 437 + #define XCHAL_INT5_EXTNUM 5 /* (intlevel 1) */ 438 + #define XCHAL_INT8_EXTNUM 6 /* (intlevel 2) */ 439 + #define XCHAL_INT9_EXTNUM 7 /* (intlevel 3) */ 440 + #define XCHAL_INT12_EXTNUM 8 /* (intlevel 2) */ 441 + #define XCHAL_INT14_EXTNUM 9 /* (intlevel 7) */ 442 + #define XCHAL_INT16_EXTNUM 10 /* (intlevel 1) */ 443 + #define XCHAL_INT17_EXTNUM 11 /* (intlevel 1) */ 444 + #define XCHAL_INT18_EXTNUM 12 /* (intlevel 1) */ 445 + #define XCHAL_INT19_EXTNUM 13 /* (intlevel 1) */ 446 + #define XCHAL_INT20_EXTNUM 14 /* (intlevel 1) */ 447 + #define XCHAL_INT21_EXTNUM 15 /* (intlevel 3) */ 448 + 449 + 450 + /*---------------------------------------------------------------------- 451 + EXCEPTIONS and VECTORS 452 + ----------------------------------------------------------------------*/ 453 + 454 + #define XCHAL_XEA_VERSION 2 /* Xtensa Exception Architecture 455 + number: 1 == XEA1 (old) 456 + 2 == XEA2 (new) 457 + 0 == XEAX (extern) or TX */ 458 + #define XCHAL_HAVE_XEA1 0 /* Exception Architecture 1 */ 459 + #define XCHAL_HAVE_XEA2 1 /* Exception Architecture 2 */ 460 + #define XCHAL_HAVE_XEAX 0 /* External Exception Arch. */ 461 + #define XCHAL_HAVE_EXCEPTIONS 1 /* exception option */ 462 + #define XCHAL_HAVE_HALT 0 /* halt architecture option */ 463 + #define XCHAL_HAVE_BOOTLOADER 0 /* boot loader (for TX) */ 464 + #define XCHAL_HAVE_MEM_ECC_PARITY 0 /* local memory ECC/parity */ 465 + #define XCHAL_HAVE_VECTOR_SELECT 1 /* relocatable vectors */ 466 + #define XCHAL_HAVE_VECBASE 1 /* relocatable vectors */ 467 + #define XCHAL_VECBASE_RESET_VADDR 0x00002000 /* VECBASE reset value */ 468 + #define XCHAL_VECBASE_RESET_PADDR 0x00002000 469 + #define XCHAL_RESET_VECBASE_OVERLAP 0 470 + 471 + #define XCHAL_RESET_VECTOR0_VADDR 0xFE000000 472 + #define XCHAL_RESET_VECTOR0_PADDR 0xFE000000 473 + #define XCHAL_RESET_VECTOR1_VADDR 0x00001000 474 + #define XCHAL_RESET_VECTOR1_PADDR 0x00001000 475 + #define XCHAL_RESET_VECTOR_VADDR 0xFE000000 476 + #define XCHAL_RESET_VECTOR_PADDR 0xFE000000 477 + #define XCHAL_USER_VECOFS 0x00000340 478 + #define XCHAL_USER_VECTOR_VADDR 0x00002340 479 + #define XCHAL_USER_VECTOR_PADDR 0x00002340 480 + #define XCHAL_KERNEL_VECOFS 0x00000300 481 + #define XCHAL_KERNEL_VECTOR_VADDR 0x00002300 482 + #define XCHAL_KERNEL_VECTOR_PADDR 0x00002300 483 + #define XCHAL_DOUBLEEXC_VECOFS 0x000003C0 484 + #define XCHAL_DOUBLEEXC_VECTOR_VADDR 0x000023C0 485 + #define XCHAL_DOUBLEEXC_VECTOR_PADDR 0x000023C0 486 + #define XCHAL_WINDOW_OF4_VECOFS 0x00000000 487 + #define XCHAL_WINDOW_UF4_VECOFS 0x00000040 488 + #define XCHAL_WINDOW_OF8_VECOFS 0x00000080 489 + #define XCHAL_WINDOW_UF8_VECOFS 0x000000C0 490 + #define XCHAL_WINDOW_OF12_VECOFS 0x00000100 491 + #define XCHAL_WINDOW_UF12_VECOFS 0x00000140 492 + #define XCHAL_WINDOW_VECTORS_VADDR 0x00002000 493 + #define XCHAL_WINDOW_VECTORS_PADDR 0x00002000 494 + #define XCHAL_INTLEVEL2_VECOFS 0x00000180 495 + #define XCHAL_INTLEVEL2_VECTOR_VADDR 0x00002180 496 + #define XCHAL_INTLEVEL2_VECTOR_PADDR 0x00002180 497 + #define XCHAL_INTLEVEL3_VECOFS 0x000001C0 498 + #define XCHAL_INTLEVEL3_VECTOR_VADDR 0x000021C0 499 + #define XCHAL_INTLEVEL3_VECTOR_PADDR 0x000021C0 500 + #define XCHAL_INTLEVEL4_VECOFS 0x00000200 501 + #define XCHAL_INTLEVEL4_VECTOR_VADDR 0x00002200 502 + #define XCHAL_INTLEVEL4_VECTOR_PADDR 0x00002200 503 + #define XCHAL_INTLEVEL5_VECOFS 0x00000240 504 + #define XCHAL_INTLEVEL5_VECTOR_VADDR 0x00002240 505 + #define XCHAL_INTLEVEL5_VECTOR_PADDR 0x00002240 506 + #define XCHAL_INTLEVEL6_VECOFS 0x00000280 507 + #define XCHAL_INTLEVEL6_VECTOR_VADDR 0x00002280 508 + #define XCHAL_INTLEVEL6_VECTOR_PADDR 0x00002280 509 + #define XCHAL_DEBUG_VECOFS XCHAL_INTLEVEL6_VECOFS 510 + #define XCHAL_DEBUG_VECTOR_VADDR XCHAL_INTLEVEL6_VECTOR_VADDR 511 + #define XCHAL_DEBUG_VECTOR_PADDR XCHAL_INTLEVEL6_VECTOR_PADDR 512 + #define XCHAL_NMI_VECOFS 0x000002C0 513 + #define XCHAL_NMI_VECTOR_VADDR 0x000022C0 514 + #define XCHAL_NMI_VECTOR_PADDR 0x000022C0 515 + #define XCHAL_INTLEVEL7_VECOFS XCHAL_NMI_VECOFS 516 + #define XCHAL_INTLEVEL7_VECTOR_VADDR XCHAL_NMI_VECTOR_VADDR 517 + #define XCHAL_INTLEVEL7_VECTOR_PADDR XCHAL_NMI_VECTOR_PADDR 518 + 519 + 520 + /*---------------------------------------------------------------------- 521 + DEBUG MODULE 522 + ----------------------------------------------------------------------*/ 523 + 524 + /* Misc */ 525 + #define XCHAL_HAVE_DEBUG_ERI 1 /* ERI to debug module */ 526 + #define XCHAL_HAVE_DEBUG_APB 1 /* APB to debug module */ 527 + #define XCHAL_HAVE_DEBUG_JTAG 1 /* JTAG to debug module */ 528 + 529 + /* On-Chip Debug (OCD) */ 530 + #define XCHAL_HAVE_OCD 1 /* OnChipDebug option */ 531 + #define XCHAL_NUM_IBREAK 2 /* number of IBREAKn regs */ 532 + #define XCHAL_NUM_DBREAK 2 /* number of DBREAKn regs */ 533 + #define XCHAL_HAVE_OCD_DIR_ARRAY 0 /* faster OCD option (to LX4) */ 534 + #define XCHAL_HAVE_OCD_LS32DDR 1 /* L32DDR/S32DDR (faster OCD) */ 535 + 536 + /* TRAX (in core) */ 537 + #define XCHAL_HAVE_TRAX 1 /* TRAX in debug module */ 538 + #define XCHAL_TRAX_MEM_SIZE 262144 /* TRAX memory size in bytes */ 539 + #define XCHAL_TRAX_MEM_SHAREABLE 1 /* start/end regs; ready sig. */ 540 + #define XCHAL_TRAX_ATB_WIDTH 0 /* ATB width (bits), 0=no ATB */ 541 + #define XCHAL_TRAX_TIME_WIDTH 0 /* timestamp bitwidth, 0=none */ 542 + 543 + /* Perf counters */ 544 + #define XCHAL_NUM_PERF_COUNTERS 8 /* performance counters */ 545 + 546 + 547 + /*---------------------------------------------------------------------- 548 + MMU 549 + ----------------------------------------------------------------------*/ 550 + 551 + /* See core-matmap.h header file for more details. */ 552 + 553 + #define XCHAL_HAVE_TLBS 1 /* inverse of HAVE_CACHEATTR */ 554 + #define XCHAL_HAVE_SPANNING_WAY 1 /* one way maps I+D 4GB vaddr */ 555 + #define XCHAL_SPANNING_WAY 6 /* TLB spanning way number */ 556 + #define XCHAL_HAVE_IDENTITY_MAP 0 /* vaddr == paddr always */ 557 + #define XCHAL_HAVE_CACHEATTR 0 /* CACHEATTR register present */ 558 + #define XCHAL_HAVE_MIMIC_CACHEATTR 0 /* region protection */ 559 + #define XCHAL_HAVE_XLT_CACHEATTR 0 /* region prot. w/translation */ 560 + #define XCHAL_HAVE_PTP_MMU 1 /* full MMU (with page table 561 + [autorefill] and protection) 562 + usable for an MMU-based OS */ 563 + /* If none of the above last 4 are set, it's a custom TLB configuration. */ 564 + #define XCHAL_ITLB_ARF_ENTRIES_LOG2 2 /* log2(autorefill way size) */ 565 + #define XCHAL_DTLB_ARF_ENTRIES_LOG2 2 /* log2(autorefill way size) */ 566 + 567 + #define XCHAL_MMU_ASID_BITS 8 /* number of bits in ASIDs */ 568 + #define XCHAL_MMU_RINGS 4 /* number of rings (1..4) */ 569 + #define XCHAL_MMU_RING_BITS 2 /* num of bits in RING field */ 570 + 571 + #endif /* !XTENSA_HAL_NON_PRIVILEGED_ONLY */ 572 + 573 + 574 + #endif /* _XTENSA_CORE_CONFIGURATION_H */ 575 +
+194
arch/xtensa/variants/csp/include/variant/tie-asm.h
··· 1 + /* 2 + * tie-asm.h -- compile-time HAL assembler definitions dependent on CORE & TIE 3 + * 4 + * NOTE: This header file is not meant to be included directly. 5 + */ 6 + 7 + /* This header file contains assembly-language definitions (assembly 8 + macros, etc.) for this specific Xtensa processor's TIE extensions 9 + and options. It is customized to this Xtensa processor configuration. 10 + 11 + Copyright (c) 1999-2015 Cadence Design Systems Inc. 12 + 13 + Permission is hereby granted, free of charge, to any person obtaining 14 + a copy of this software and associated documentation files (the 15 + "Software"), to deal in the Software without restriction, including 16 + without limitation the rights to use, copy, modify, merge, publish, 17 + distribute, sublicense, and/or sell copies of the Software, and to 18 + permit persons to whom the Software is furnished to do so, subject to 19 + the following conditions: 20 + 21 + The above copyright notice and this permission notice shall be included 22 + in all copies or substantial portions of the Software. 23 + 24 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 27 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 28 + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 29 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 30 + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 31 + 32 + #ifndef _XTENSA_CORE_TIE_ASM_H 33 + #define _XTENSA_CORE_TIE_ASM_H 34 + 35 + /* Selection parameter values for save-area save/restore macros: */ 36 + /* Option vs. TIE: */ 37 + #define XTHAL_SAS_TIE 0x0001 /* custom extension or coprocessor */ 38 + #define XTHAL_SAS_OPT 0x0002 /* optional (and not a coprocessor) */ 39 + #define XTHAL_SAS_ANYOT 0x0003 /* both of the above */ 40 + /* Whether used automatically by compiler: */ 41 + #define XTHAL_SAS_NOCC 0x0004 /* not used by compiler w/o special opts/code */ 42 + #define XTHAL_SAS_CC 0x0008 /* used by compiler without special opts/code */ 43 + #define XTHAL_SAS_ANYCC 0x000C /* both of the above */ 44 + /* ABI handling across function calls: */ 45 + #define XTHAL_SAS_CALR 0x0010 /* caller-saved */ 46 + #define XTHAL_SAS_CALE 0x0020 /* callee-saved */ 47 + #define XTHAL_SAS_GLOB 0x0040 /* global across function calls (in thread) */ 48 + #define XTHAL_SAS_ANYABI 0x0070 /* all of the above three */ 49 + /* Misc */ 50 + #define XTHAL_SAS_ALL 0xFFFF /* include all default NCP contents */ 51 + #define XTHAL_SAS3(optie,ccuse,abi) ( ((optie) & XTHAL_SAS_ANYOT) \ 52 + | ((ccuse) & XTHAL_SAS_ANYCC) \ 53 + | ((abi) & XTHAL_SAS_ANYABI) ) 54 + 55 + 56 + /* 57 + * Macro to store all non-coprocessor (extra) custom TIE and optional state 58 + * (not including zero-overhead loop registers). 59 + * Required parameters: 60 + * ptr Save area pointer address register (clobbered) 61 + * (register must contain a 4 byte aligned address). 62 + * at1..at4 Four temporary address registers (first XCHAL_NCP_NUM_ATMPS 63 + * registers are clobbered, the remaining are unused). 64 + * Optional parameters: 65 + * continue If macro invoked as part of a larger store sequence, set to 1 66 + * if this is not the first in the sequence. Defaults to 0. 67 + * ofs Offset from start of larger sequence (from value of first ptr 68 + * in sequence) at which to store. Defaults to next available space 69 + * (or 0 if <continue> is 0). 70 + * select Select what category(ies) of registers to store, as a bitmask 71 + * (see XTHAL_SAS_xxx constants). Defaults to all registers. 72 + * alloc Select what category(ies) of registers to allocate; if any 73 + * category is selected here that is not in <select>, space for 74 + * the corresponding registers is skipped without doing any store. 75 + */ 76 + .macro xchal_ncp_store ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL alloc=0 77 + xchal_sa_start \continue, \ofs 78 + // Optional global registers used by default by the compiler: 79 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~(\select) 80 + xchal_sa_align \ptr, 0, 1020, 4, 4 81 + rur.THREADPTR \at1 // threadptr option 82 + s32i \at1, \ptr, .Lxchal_ofs_+0 83 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 84 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~(\alloc)) == 0 85 + xchal_sa_align \ptr, 0, 1020, 4, 4 86 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 87 + .endif 88 + // Optional caller-saved registers used by default by the compiler: 89 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_CALR) & ~(\select) 90 + xchal_sa_align \ptr, 0, 1016, 4, 4 91 + rsr.ACCLO \at1 // MAC16 option 92 + s32i \at1, \ptr, .Lxchal_ofs_+0 93 + rsr.ACCHI \at1 // MAC16 option 94 + s32i \at1, \ptr, .Lxchal_ofs_+4 95 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 8 96 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_CALR) & ~(\alloc)) == 0 97 + xchal_sa_align \ptr, 0, 1016, 4, 4 98 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 8 99 + .endif 100 + // Optional caller-saved registers not used by default by the compiler: 101 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~(\select) 102 + xchal_sa_align \ptr, 0, 1000, 4, 4 103 + rsr.BR \at1 // boolean option 104 + s32i \at1, \ptr, .Lxchal_ofs_+0 105 + rsr.SCOMPARE1 \at1 // conditional store option 106 + s32i \at1, \ptr, .Lxchal_ofs_+4 107 + rsr.M0 \at1 // MAC16 option 108 + s32i \at1, \ptr, .Lxchal_ofs_+8 109 + rsr.M1 \at1 // MAC16 option 110 + s32i \at1, \ptr, .Lxchal_ofs_+12 111 + rsr.M2 \at1 // MAC16 option 112 + s32i \at1, \ptr, .Lxchal_ofs_+16 113 + rsr.M3 \at1 // MAC16 option 114 + s32i \at1, \ptr, .Lxchal_ofs_+20 115 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 24 116 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~(\alloc)) == 0 117 + xchal_sa_align \ptr, 0, 1000, 4, 4 118 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 24 119 + .endif 120 + .endm // xchal_ncp_store 121 + 122 + /* 123 + * Macro to load all non-coprocessor (extra) custom TIE and optional state 124 + * (not including zero-overhead loop registers). 125 + * Required parameters: 126 + * ptr Save area pointer address register (clobbered) 127 + * (register must contain a 4 byte aligned address). 128 + * at1..at4 Four temporary address registers (first XCHAL_NCP_NUM_ATMPS 129 + * registers are clobbered, the remaining are unused). 130 + * Optional parameters: 131 + * continue If macro invoked as part of a larger load sequence, set to 1 132 + * if this is not the first in the sequence. Defaults to 0. 133 + * ofs Offset from start of larger sequence (from value of first ptr 134 + * in sequence) at which to load. Defaults to next available space 135 + * (or 0 if <continue> is 0). 136 + * select Select what category(ies) of registers to load, as a bitmask 137 + * (see XTHAL_SAS_xxx constants). Defaults to all registers. 138 + * alloc Select what category(ies) of registers to allocate; if any 139 + * category is selected here that is not in <select>, space for 140 + * the corresponding registers is skipped without doing any load. 141 + */ 142 + .macro xchal_ncp_load ptr at1 at2 at3 at4 continue=0 ofs=-1 select=XTHAL_SAS_ALL alloc=0 143 + xchal_sa_start \continue, \ofs 144 + // Optional global registers used by default by the compiler: 145 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~(\select) 146 + xchal_sa_align \ptr, 0, 1020, 4, 4 147 + l32i \at1, \ptr, .Lxchal_ofs_+0 148 + wur.THREADPTR \at1 // threadptr option 149 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 150 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_GLOB) & ~(\alloc)) == 0 151 + xchal_sa_align \ptr, 0, 1020, 4, 4 152 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 4 153 + .endif 154 + // Optional caller-saved registers used by default by the compiler: 155 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_CALR) & ~(\select) 156 + xchal_sa_align \ptr, 0, 1016, 4, 4 157 + l32i \at1, \ptr, .Lxchal_ofs_+0 158 + wsr.ACCLO \at1 // MAC16 option 159 + l32i \at1, \ptr, .Lxchal_ofs_+4 160 + wsr.ACCHI \at1 // MAC16 option 161 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 8 162 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_CC | XTHAL_SAS_CALR) & ~(\alloc)) == 0 163 + xchal_sa_align \ptr, 0, 1016, 4, 4 164 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 8 165 + .endif 166 + // Optional caller-saved registers not used by default by the compiler: 167 + .ifeq (XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~(\select) 168 + xchal_sa_align \ptr, 0, 1000, 4, 4 169 + l32i \at1, \ptr, .Lxchal_ofs_+0 170 + wsr.BR \at1 // boolean option 171 + l32i \at1, \ptr, .Lxchal_ofs_+4 172 + wsr.SCOMPARE1 \at1 // conditional store option 173 + l32i \at1, \ptr, .Lxchal_ofs_+8 174 + wsr.M0 \at1 // MAC16 option 175 + l32i \at1, \ptr, .Lxchal_ofs_+12 176 + wsr.M1 \at1 // MAC16 option 177 + l32i \at1, \ptr, .Lxchal_ofs_+16 178 + wsr.M2 \at1 // MAC16 option 179 + l32i \at1, \ptr, .Lxchal_ofs_+20 180 + wsr.M3 \at1 // MAC16 option 181 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 24 182 + .elseif ((XTHAL_SAS_OPT | XTHAL_SAS_NOCC | XTHAL_SAS_CALR) & ~(\alloc)) == 0 183 + xchal_sa_align \ptr, 0, 1000, 4, 4 184 + .set .Lxchal_ofs_, .Lxchal_ofs_ + 24 185 + .endif 186 + .endm // xchal_ncp_load 187 + 188 + 189 + #define XCHAL_NCP_NUM_ATMPS 1 190 + 191 + #define XCHAL_SA_NUM_ATMPS 1 192 + 193 + #endif /*_XTENSA_CORE_TIE_ASM_H*/ 194 +
+161
arch/xtensa/variants/csp/include/variant/tie.h
··· 1 + /* 2 + * tie.h -- compile-time HAL definitions dependent on CORE & TIE configuration 3 + * 4 + * NOTE: This header file is not meant to be included directly. 5 + */ 6 + 7 + /* This header file describes this specific Xtensa processor's TIE extensions 8 + that extend basic Xtensa core functionality. It is customized to this 9 + Xtensa processor configuration. 10 + 11 + Copyright (c) 1999-2015 Cadence Design Systems Inc. 12 + 13 + Permission is hereby granted, free of charge, to any person obtaining 14 + a copy of this software and associated documentation files (the 15 + "Software"), to deal in the Software without restriction, including 16 + without limitation the rights to use, copy, modify, merge, publish, 17 + distribute, sublicense, and/or sell copies of the Software, and to 18 + permit persons to whom the Software is furnished to do so, subject to 19 + the following conditions: 20 + 21 + The above copyright notice and this permission notice shall be included 22 + in all copies or substantial portions of the Software. 23 + 24 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 27 + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 28 + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 29 + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 30 + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 31 + 32 + #ifndef _XTENSA_CORE_TIE_H 33 + #define _XTENSA_CORE_TIE_H 34 + 35 + #define XCHAL_CP_NUM 1 /* number of coprocessors */ 36 + #define XCHAL_CP_MAX 8 /* max CP ID + 1 (0 if none) */ 37 + #define XCHAL_CP_MASK 0x80 /* bitmask of all CPs by ID */ 38 + #define XCHAL_CP_PORT_MASK 0x80 /* bitmask of only port CPs */ 39 + 40 + /* Basic parameters of each coprocessor: */ 41 + #define XCHAL_CP7_NAME "XTIOP" 42 + #define XCHAL_CP7_IDENT XTIOP 43 + #define XCHAL_CP7_SA_SIZE 0 /* size of state save area */ 44 + #define XCHAL_CP7_SA_ALIGN 1 /* min alignment of save area */ 45 + #define XCHAL_CP_ID_XTIOP 7 /* coprocessor ID (0..7) */ 46 + 47 + /* Filler info for unassigned coprocessors, to simplify arrays etc: */ 48 + #define XCHAL_CP0_SA_SIZE 0 49 + #define XCHAL_CP0_SA_ALIGN 1 50 + #define XCHAL_CP1_SA_SIZE 0 51 + #define XCHAL_CP1_SA_ALIGN 1 52 + #define XCHAL_CP2_SA_SIZE 0 53 + #define XCHAL_CP2_SA_ALIGN 1 54 + #define XCHAL_CP3_SA_SIZE 0 55 + #define XCHAL_CP3_SA_ALIGN 1 56 + #define XCHAL_CP4_SA_SIZE 0 57 + #define XCHAL_CP4_SA_ALIGN 1 58 + #define XCHAL_CP5_SA_SIZE 0 59 + #define XCHAL_CP5_SA_ALIGN 1 60 + #define XCHAL_CP6_SA_SIZE 0 61 + #define XCHAL_CP6_SA_ALIGN 1 62 + 63 + /* Save area for non-coprocessor optional and custom (TIE) state: */ 64 + #define XCHAL_NCP_SA_SIZE 36 65 + #define XCHAL_NCP_SA_ALIGN 4 66 + 67 + /* Total save area for optional and custom state (NCP + CPn): */ 68 + #define XCHAL_TOTAL_SA_SIZE 48 /* with 16-byte align padding */ 69 + #define XCHAL_TOTAL_SA_ALIGN 4 /* actual minimum alignment */ 70 + 71 + /* 72 + * Detailed contents of save areas. 73 + * NOTE: caller must define the XCHAL_SA_REG macro (not defined here) 74 + * before expanding the XCHAL_xxx_SA_LIST() macros. 75 + * 76 + * XCHAL_SA_REG(s,ccused,abikind,kind,opt,name,galign,align,asize, 77 + * dbnum,base,regnum,bitsz,gapsz,reset,x...) 78 + * 79 + * s = passed from XCHAL_*_LIST(s), eg. to select how to expand 80 + * ccused = set if used by compiler without special options or code 81 + * abikind = 0 (caller-saved), 1 (callee-saved), or 2 (thread-global) 82 + * kind = 0 (special reg), 1 (TIE user reg), or 2 (TIE regfile reg) 83 + * opt = 0 (custom TIE extension or coprocessor), or 1 (optional reg) 84 + * name = lowercase reg name (no quotes) 85 + * galign = group byte alignment (power of 2) (galign >= align) 86 + * align = register byte alignment (power of 2) 87 + * asize = allocated size in bytes (asize*8 == bitsz + gapsz + padsz) 88 + * (not including any pad bytes required to galign this or next reg) 89 + * dbnum = unique target number f/debug (see <xtensa-libdb-macros.h>) 90 + * base = reg shortname w/o index (or sr=special, ur=TIE user reg) 91 + * regnum = reg index in regfile, or special/TIE-user reg number 92 + * bitsz = number of significant bits (regfile width, or ur/sr mask bits) 93 + * gapsz = intervening bits, if bitsz bits not stored contiguously 94 + * (padsz = pad bits at end [TIE regfile] or at msbits [ur,sr] of asize) 95 + * reset = register reset value (or 0 if undefined at reset) 96 + * x = reserved for future use (0 until then) 97 + * 98 + * To filter out certain registers, e.g. to expand only the non-global 99 + * registers used by the compiler, you can do something like this: 100 + * 101 + * #define XCHAL_SA_REG(s,ccused,p...) SELCC##ccused(p) 102 + * #define SELCC0(p...) 103 + * #define SELCC1(abikind,p...) SELAK##abikind(p) 104 + * #define SELAK0(p...) REG(p) 105 + * #define SELAK1(p...) REG(p) 106 + * #define SELAK2(p...) 107 + * #define REG(kind,tie,name,galn,aln,asz,csz,dbnum,base,rnum,bsz,rst,x...) \ 108 + * ...what you want to expand... 109 + */ 110 + 111 + #define XCHAL_NCP_SA_NUM 9 112 + #define XCHAL_NCP_SA_LIST(s) \ 113 + XCHAL_SA_REG(s,1,2,1,1, threadptr, 4, 4, 4,0x03E7, ur,231, 32,0,0,0) \ 114 + XCHAL_SA_REG(s,1,0,0,1, acclo, 4, 4, 4,0x0210, sr,16 , 32,0,0,0) \ 115 + XCHAL_SA_REG(s,1,0,0,1, acchi, 4, 4, 4,0x0211, sr,17 , 8,0,0,0) \ 116 + XCHAL_SA_REG(s,0,0,0,1, br, 4, 4, 4,0x0204, sr,4 , 16,0,0,0) \ 117 + XCHAL_SA_REG(s,0,0,0,1, scompare1, 4, 4, 4,0x020C, sr,12 , 32,0,0,0) \ 118 + XCHAL_SA_REG(s,0,0,0,1, m0, 4, 4, 4,0x0220, sr,32 , 32,0,0,0) \ 119 + XCHAL_SA_REG(s,0,0,0,1, m1, 4, 4, 4,0x0221, sr,33 , 32,0,0,0) \ 120 + XCHAL_SA_REG(s,0,0,0,1, m2, 4, 4, 4,0x0222, sr,34 , 32,0,0,0) \ 121 + XCHAL_SA_REG(s,0,0,0,1, m3, 4, 4, 4,0x0223, sr,35 , 32,0,0,0) 122 + 123 + #define XCHAL_CP0_SA_NUM 0 124 + #define XCHAL_CP0_SA_LIST(s) /* empty */ 125 + 126 + #define XCHAL_CP1_SA_NUM 0 127 + #define XCHAL_CP1_SA_LIST(s) /* empty */ 128 + 129 + #define XCHAL_CP2_SA_NUM 0 130 + #define XCHAL_CP2_SA_LIST(s) /* empty */ 131 + 132 + #define XCHAL_CP3_SA_NUM 0 133 + #define XCHAL_CP3_SA_LIST(s) /* empty */ 134 + 135 + #define XCHAL_CP4_SA_NUM 0 136 + #define XCHAL_CP4_SA_LIST(s) /* empty */ 137 + 138 + #define XCHAL_CP5_SA_NUM 0 139 + #define XCHAL_CP5_SA_LIST(s) /* empty */ 140 + 141 + #define XCHAL_CP6_SA_NUM 0 142 + #define XCHAL_CP6_SA_LIST(s) /* empty */ 143 + 144 + #define XCHAL_CP7_SA_NUM 0 145 + #define XCHAL_CP7_SA_LIST(s) /* empty */ 146 + 147 + /* Byte length of instruction from its first nibble (op0 field), per FLIX. */ 148 + #define XCHAL_OP0_FORMAT_LENGTHS 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3 149 + /* Byte length of instruction from its first byte, per FLIX. */ 150 + #define XCHAL_BYTE0_FORMAT_LENGTHS \ 151 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 152 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 153 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 154 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 155 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 156 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 157 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3,\ 158 + 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,3,3 159 + 160 + #endif /*_XTENSA_CORE_TIE_H*/ 161 +