__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2017 Imagination Technologies * Author: Paul Burton <[email protected]> */ #ifndef __MIPS_ASM_MIPS_CPS_H__ #define __MIPS_ASM_MIPS_CPS_H__ #include <linux/bitfield.h> #include <linux/cpumask.h> #include <linux/io.h> #include <linux/types.h> extern unsigned long __cps_access_bad_size(void) __compiletime_error("Bad size for CPS accessor"); #define CPS_ACCESSOR_A(unit, off, name) \ static inline void *addr_##unit##_##name(void) \ { \ return mips_##unit##_base + (off); \ } #define CPS_ACCESSOR_R(unit, sz, name) \ static inline uint##sz##_t read_##unit##_##name(void) \ { \ uint64_t val64; \ \ switch (sz) { \ case 32: \ return __raw_readl(addr_##unit##_##name()); \ \ case 64: \ if (mips_cm_is64) \ return __raw_readq(addr_##unit##_##name()); \ \ val64 = __raw_readl(addr_##unit##_##name() + 4); \ val64 <<= 32; \ val64 |= __raw_readl(addr_##unit##_##name()); \ return val64; \ \ default: \ return __cps_access_bad_size(); \ } \ } #define CPS_ACCESSOR_W(unit, sz, name) \ static inline void write_##unit##_##name(uint##sz##_t val) \ { \ switch (sz) { \ case 32: \ __raw_writel(val, addr_##unit##_##name()); \ break; \ \ case 64: \ if (mips_cm_is64) { \ __raw_writeq(val, addr_##unit##_##name()); \ break; \ } \ \ __raw_writel((uint64_t)val >> 32, \ addr_##unit##_##name() + 4); \ __raw_writel(val, addr_##unit##_##name()); \ break; \ \ default: \ __cps_access_bad_size(); \ break; \ } \ } #define CPS_ACCESSOR_M(unit, sz, name) \ static inline void change_##unit##_##name(uint##sz##_t mask, \ uint##sz##_t val) \ { \ uint##sz##_t reg_val = read_##unit##_##name(); \ reg_val &= ~mask; \ reg_val |= val; \ write_##unit##_##name(reg_val); \ } \ \ static inline void set_##unit##_##name(uint##sz##_t val) \ { \ change_##unit##_##name(val, val); \ } \ \ static inline void clear_##unit##_##name(uint##sz##_t val) \ { \ change_##unit##_##name(val, 0); \ } #define CPS_ACCESSOR_RO(unit, sz, off, name) \ CPS_ACCESSOR_A(unit, off, name) \ CPS_ACCESSOR_R(unit, sz, name) #define CPS_ACCESSOR_WO(unit, sz, off, name) \ CPS_ACCESSOR_A(unit, off, name) \ CPS_ACCESSOR_W(unit, sz, name) #define CPS_ACCESSOR_RW(unit, sz, off, name) \ CPS_ACCESSOR_A(unit, off, name) \ CPS_ACCESSOR_R(unit, sz, name) \ CPS_ACCESSOR_W(unit, sz, name) \ CPS_ACCESSOR_M(unit, sz, name) #include <asm/mips-cm.h> #include <asm/mips-cpc.h> #include <asm/mips-gic.h> /** * mips_cps_numclusters - return the number of clusters present in the system * * Returns the number of clusters in the system. */ static inline unsigned int mips_cps_numclusters(void) { if (mips_cm_revision() < CM_REV_CM3_5) return 1; return FIELD_GET(CM_GCR_CONFIG_NUM_CLUSTERS, read_gcr_config()); } /** * mips_cps_cluster_config - return (GCR|CPC)_CONFIG from a cluster * @cluster: the ID of the cluster whose config we want * * Read the value of GCR_CONFIG (or its CPC_CONFIG mirror) from a @cluster. * * Returns the value of GCR_CONFIG. */ static inline uint64_t mips_cps_cluster_config(unsigned int cluster) { uint64_t config; if (mips_cm_revision() < CM_REV_CM3_5) { /* * Prior to CM 3.5 we don't have the notion of multiple * clusters so we can trivially read the GCR_CONFIG register * within this cluster. */ WARN_ON(cluster != 0); config = read_gcr_config(); } else { /* * From CM 3.5 onwards we read the CPC_CONFIG mirror of * GCR_CONFIG via the redirect region, since the CPC is always * powered up allowing us not to need to power up the CM. */ mips_cm_lock_other(cluster, 0, 0, CM_GCR_Cx_OTHER_BLOCK_GLOBAL); config = read_cpc_redir_config(); mips_cm_unlock_other(); } return config; } /** * mips_cps_numcores - return the number of cores present in a cluster * @cluster: the ID of the cluster whose core count we want * * Returns the value of the PCORES field of the GCR_CONFIG register plus 1, or * zero if no Coherence Manager is present. */ static inline unsigned int mips_cps_numcores(unsigned int cluster) { if (!mips_cm_present()) return 0; /* Add one before masking to handle 0xff indicating no cores */ return FIELD_GET(CM_GCR_CONFIG_PCORES, mips_cps_cluster_config(cluster) + 1); } /** * mips_cps_numiocu - return the number of IOCUs present in a cluster * @cluster: the ID of the cluster whose IOCU count we want * * Returns the value of the NUMIOCU field of the GCR_CONFIG register, or zero * if no Coherence Manager is present. */ static inline unsigned int mips_cps_numiocu(unsigned int cluster) { if (!mips_cm_present()) return 0; return FIELD_GET(CM_GCR_CONFIG_NUMIOCU, mips_cps_cluster_config(cluster)); } /** * mips_cps_numvps - return the number of VPs (threads) supported by a core * @cluster: the ID of the cluster containing the core we want to examine * @core: the ID of the core whose VP count we want * * Returns the number of Virtual Processors (VPs, ie. hardware threads) that * are supported by the given @core in the given @cluster. If the core or the * kernel do not support hardware mutlti-threading this returns 1. */ static inline unsigned int mips_cps_numvps(unsigned int cluster, unsigned int core) { unsigned int cfg; if (!mips_cm_present()) return 1; if ((!IS_ENABLED(CONFIG_MIPS_MT_SMP) || !cpu_has_mipsmt) && (!IS_ENABLED(CONFIG_CPU_MIPSR6) || !cpu_has_vp)) return 1; mips_cm_lock_other(cluster, core, 0, CM_GCR_Cx_OTHER_BLOCK_LOCAL); if (mips_cm_revision() < CM_REV_CM3_5) { /* * Prior to CM 3.5 we can only have one cluster & don't have * CPC_Cx_CONFIG, so we read GCR_Cx_CONFIG. */ cfg = read_gcr_co_config(); } else { /* * From CM 3.5 onwards we read CPC_Cx_CONFIG because the CPC is * always powered, which allows us to not worry about powering * up the cluster's CM here. */ cfg = read_cpc_co_config(); } mips_cm_unlock_other(); return FIELD_GET(CM_GCR_Cx_CONFIG_PVPE, cfg + 1); } /** * mips_cps_multicluster_cpus() - Detect whether CPUs are in multiple clusters * * Determine whether the system includes CPUs in multiple clusters - ie. * whether we can treat the system as single or multi-cluster as far as CPUs * are concerned. Note that this is slightly different to simply checking * whether multiple clusters are present - it is possible for there to be * clusters which contain no CPUs, which this function will effectively ignore. * * Returns true if CPUs are spread across multiple clusters, else false. */ static inline bool mips_cps_multicluster_cpus(void) { unsigned int first_cl, last_cl; /* * CPUs are numbered sequentially by cluster - ie. CPUs 0..X will be in * cluster 0, CPUs X+1..Y in cluster 1, CPUs Y+1..Z in cluster 2 etc. * * Thus we can detect multiple clusters trivially by checking whether * the first & last CPUs belong to the same cluster. */ first_cl = cpu_cluster(&boot_cpu_data); last_cl = cpu_cluster(&cpu_data[nr_cpu_ids - 1]); return first_cl != last_cl; } /** * mips_cps_first_online_in_cluster() - Detect if CPU is first online in cluster * * Determine whether the local CPU is the first to be brought online in its * cluster - that is, whether there are any other online CPUs in the local * cluster. * * Returns true if this CPU is first online, else false. */ extern unsigned int mips_cps_first_online_in_cluster(void); #endif /* __MIPS_ASM_MIPS_CPS_H__ */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| dec | Folder | 0755 |
|
|
| fw | Folder | 0755 |
|
|
| ip32 | Folder | 0755 |
|
|
| mach-ath25 | Folder | 0755 |
|
|
| mach-ath79 | Folder | 0755 |
|
|
| mach-au1x00 | Folder | 0755 |
|
|
| mach-bcm47xx | Folder | 0755 |
|
|
| mach-bcm63xx | Folder | 0755 |
|
|
| mach-bmips | Folder | 0755 |
|
|
| mach-cavium-octeon | Folder | 0755 |
|
|
| mach-cobalt | Folder | 0755 |
|
|
| mach-db1x00 | Folder | 0755 |
|
|
| mach-dec | Folder | 0755 |
|
|
| mach-generic | Folder | 0755 |
|
|
| mach-ingenic | Folder | 0755 |
|
|
| mach-ip22 | Folder | 0755 |
|
|
| mach-ip27 | Folder | 0755 |
|
|
| mach-ip28 | Folder | 0755 |
|
|
| mach-ip30 | Folder | 0755 |
|
|
| mach-ip32 | Folder | 0755 |
|
|
| mach-jazz | Folder | 0755 |
|
|
| mach-lantiq | Folder | 0755 |
|
|
| mach-loongson2ef | Folder | 0755 |
|
|
| mach-loongson32 | Folder | 0755 |
|
|
| mach-loongson64 | Folder | 0755 |
|
|
| mach-malta | Folder | 0755 |
|
|
| mach-n64 | Folder | 0755 |
|
|
| mach-pic32 | Folder | 0755 |
|
|
| mach-ralink | Folder | 0755 |
|
|
| mach-rc32434 | Folder | 0755 |
|
|
| mach-rm | Folder | 0755 |
|
|
| mach-sibyte | Folder | 0755 |
|
|
| mach-tx49xx | Folder | 0755 |
|
|
| mips-boards | Folder | 0755 |
|
|
| octeon | Folder | 0755 |
|
|
| pci | Folder | 0755 |
|
|
| sgi | Folder | 0755 |
|
|
| sibyte | Folder | 0755 |
|
|
| sn | Folder | 0755 |
|
|
| txx9 | Folder | 0755 |
|
|
| vdso | Folder | 0755 |
|
|
| xtalk | Folder | 0755 |
|
|
| Kbuild | File | 421 B | 0644 |
|
| abi.h | File | 853 B | 0644 |
|
| addrspace.h | File | 4.02 KB | 0644 |
|
| amon.h | File | 409 B | 0644 |
|
| arch_hweight.h | File | 792 B | 0644 |
|
| asm-eva.h | File | 7.17 KB | 0644 |
|
| asm-offsets.h | File | 35 B | 0644 |
|
| asm-prototypes.h | File | 318 B | 0644 |
|
| asm.h | File | 7.16 KB | 0644 |
|
| asmmacro-32.h | File | 2.47 KB | 0644 |
|
| asmmacro-64.h | File | 1.22 KB | 0644 |
|
| asmmacro.h | File | 14.67 KB | 0644 |
|
| atomic.h | File | 7.83 KB | 0644 |
|
| barrier.h | File | 3.42 KB | 0644 |
|
| bcache.h | File | 2.04 KB | 0644 |
|
| bitops.h | File | 11.18 KB | 0644 |
|
| bitrev.h | File | 608 B | 0644 |
|
| bmips-spaces.h | File | 268 B | 0644 |
|
| bmips.h | File | 3.06 KB | 0644 |
|
| bootinfo.h | File | 4.81 KB | 0644 |
|
| branch.h | File | 2.44 KB | 0644 |
|
| break.h | File | 787 B | 0644 |
|
| bug.h | File | 759 B | 0644 |
|
| bugs.h | File | 527 B | 0644 |
|
| cache.h | File | 810 B | 0644 |
|
| cacheflush.h | File | 4.98 KB | 0644 |
|
| cacheops.h | File | 3.71 KB | 0644 |
|
| cachetype.h | File | 193 B | 0644 |
|
| cdmm.h | File | 3.68 KB | 0644 |
|
| cevt-r4k.h | File | 823 B | 0644 |
|
| checksum.h | File | 5.66 KB | 0644 |
|
| clocksource.h | File | 273 B | 0644 |
|
| cmp.h | File | 181 B | 0644 |
|
| cmpxchg.h | File | 8.69 KB | 0644 |
|
| compat-signal.h | File | 640 B | 0644 |
|
| compat.h | File | 3.45 KB | 0644 |
|
| compiler.h | File | 2.61 KB | 0644 |
|
| cop2.h | File | 1.47 KB | 0644 |
|
| cpu-features.h | File | 22.21 KB | 0644 |
|
| cpu-info.h | File | 6.16 KB | 0644 |
|
| cpu-type.h | File | 3.78 KB | 0644 |
|
| cpu.h | File | 16.31 KB | 0644 |
|
| cpufeature.h | File | 510 B | 0644 |
|
| debug.h | File | 447 B | 0644 |
|
| delay.h | File | 841 B | 0644 |
|
| div64.h | File | 2.17 KB | 0644 |
|
| dma-direct.h | File | 255 B | 0644 |
|
| dma-mapping.h | File | 349 B | 0644 |
|
| dma.h | File | 9.81 KB | 0644 |
|
| dmi.h | File | 547 B | 0644 |
|
| ds1287.h | File | 333 B | 0644 |
|
| dsemul.h | File | 3.51 KB | 0644 |
|
| dsp.h | File | 1.71 KB | 0644 |
|
| edac.h | File | 839 B | 0644 |
|
| elf.h | File | 15.19 KB | 0644 |
|
| elfcore-compat.h | File | 841 B | 0644 |
|
| errno.h | File | 429 B | 0644 |
|
| eva.h | File | 796 B | 0644 |
|
| exec.h | File | 579 B | 0644 |
|
| extable.h | File | 241 B | 0644 |
|
| fixmap.h | File | 2.17 KB | 0644 |
|
| floppy.h | File | 1.57 KB | 0644 |
|
| fpregdef.h | File | 2.1 KB | 0644 |
|
| fpu.h | File | 7.39 KB | 0644 |
|
| fpu_emulator.h | File | 4.73 KB | 0644 |
|
| ftrace.h | File | 2.7 KB | 0644 |
|
| futex.h | File | 5.43 KB | 0644 |
|
| ginvt.h | File | 1.13 KB | 0644 |
|
| gio_device.h | File | 1.38 KB | 0644 |
|
| gt64120.h | File | 18.77 KB | 0644 |
|
| hardirq.h | File | 544 B | 0644 |
|
| hazards.h | File | 8.44 KB | 0644 |
|
| highmem.h | File | 1.7 KB | 0644 |
|
| hpet.h | File | 1.93 KB | 0644 |
|
| hugetlb.h | File | 2.09 KB | 0644 |
|
| hw_irq.h | File | 475 B | 0644 |
|
| i8259.h | File | 2.38 KB | 0644 |
|
| idle.h | File | 727 B | 0644 |
|
| inst.h | File | 2.34 KB | 0644 |
|
| io.h | File | 16.26 KB | 0644 |
|
| irq.h | File | 2.2 KB | 0644 |
|
| irq_cpu.h | File | 427 B | 0644 |
|
| irq_gt641xx.h | File | 2.03 KB | 0644 |
|
| irq_regs.h | File | 540 B | 0644 |
|
| irqflags.h | File | 4.11 KB | 0644 |
|
| isa-rev.h | File | 556 B | 0644 |
|
| isadep.h | File | 573 B | 0644 |
|
| jazz.h | File | 8 KB | 0644 |
|
| jazzdma.h | File | 2.76 KB | 0644 |
|
| jump_label.h | File | 1.65 KB | 0644 |
|
| kdebug.h | File | 303 B | 0644 |
|
| kexec.h | File | 1.46 KB | 0644 |
|
| kgdb.h | File | 1.19 KB | 0644 |
|
| kprobes.h | File | 1.58 KB | 0644 |
|
| kvm_host.h | File | 29.5 KB | 0644 |
|
| kvm_types.h | File | 184 B | 0644 |
|
| linkage.h | File | 306 B | 0644 |
|
| local.h | File | 4.71 KB | 0644 |
|
| maar.h | File | 4.17 KB | 0644 |
|
| machine.h | File | 2.73 KB | 0644 |
|
| mc146818-time.h | File | 3.69 KB | 0644 |
|
| mc146818rtc.h | File | 450 B | 0644 |
|
| mips-cm.h | File | 17.11 KB | 0644 |
|
| mips-cpc.h | File | 5.63 KB | 0644 |
|
| mips-cps.h | File | 7.62 KB | 0644 |
|
| mips-gic.h | File | 12.93 KB | 0644 |
|
| mips-r2-to-r6-emul.h | File | 2.05 KB | 0644 |
|
| mips_mt.h | File | 641 B | 0644 |
|
| mipsmtregs.h | File | 12.44 KB | 0644 |
|
| mipsprom.h | File | 2.1 KB | 0644 |
|
| mipsregs.h | File | 97.75 KB | 0644 |
|
| mmiowb.h | File | 194 B | 0644 |
|
| mmu.h | File | 555 B | 0644 |
|
| mmu_context.h | File | 6.06 KB | 0644 |
|
| mmzone.h | File | 464 B | 0644 |
|
| module.h | File | 2.33 KB | 0644 |
|
| msa.h | File | 7.71 KB | 0644 |
|
| msc01_ic.h | File | 6.55 KB | 0644 |
|
| paccess.h | File | 3.07 KB | 0644 |
|
| page.h | File | 6.45 KB | 0644 |
|
| pci.h | File | 3.65 KB | 0644 |
|
| perf_event.h | File | 336 B | 0644 |
|
| pgalloc.h | File | 2.38 KB | 0644 |
|
| pgtable-32.h | File | 9.99 KB | 0644 |
|
| pgtable-64.h | File | 9.89 KB | 0644 |
|
| pgtable-bits.h | File | 7.7 KB | 0644 |
|
| pgtable.h | File | 18.57 KB | 0644 |
|
| pm-cps.h | File | 1.48 KB | 0644 |
|
| pm.h | File | 3.69 KB | 0644 |
|
| prefetch.h | File | 2.1 KB | 0644 |
|
| processor.h | File | 10.97 KB | 0644 |
|
| prom.h | File | 706 B | 0644 |
|
| ptrace.h | File | 5.55 KB | 0644 |
|
| r4k-timer.h | File | 499 B | 0644 |
|
| r4kcache.h | File | 11.2 KB | 0644 |
|
| reboot.h | File | 440 B | 0644 |
|
| reg.h | File | 26 B | 0644 |
|
| regdef.h | File | 4.95 KB | 0644 |
|
| rtlx.h | File | 2.03 KB | 0644 |
|
| seccomp.h | File | 810 B | 0644 |
|
| setup.h | File | 1.08 KB | 0644 |
|
| sgialib.h | File | 1.7 KB | 0644 |
|
| sgiarcs.h | File | 13.69 KB | 0644 |
|
| shmparam.h | File | 352 B | 0644 |
|
| sigcontext.h | File | 1.04 KB | 0644 |
|
| signal.h | File | 1.1 KB | 0644 |
|
| sim.h | File | 2.02 KB | 0644 |
|
| smp-cps.h | File | 1.22 KB | 0644 |
|
| smp-ops.h | File | 2.24 KB | 0644 |
|
| smp.h | File | 3.64 KB | 0644 |
|
| sni.h | File | 7.26 KB | 0644 |
|
| socket.h | File | 1.34 KB | 0644 |
|
| sparsemem.h | File | 486 B | 0644 |
|
| spinlock.h | File | 822 B | 0644 |
|
| spinlock_types.h | File | 188 B | 0644 |
|
| spram.h | File | 254 B | 0644 |
|
| stackframe.h | File | 10.88 KB | 0644 |
|
| stackprotector.h | File | 1022 B | 0644 |
|
| stacktrace.h | File | 2.15 KB | 0644 |
|
| string.h | File | 692 B | 0644 |
|
| switch_to.h | File | 4.35 KB | 0644 |
|
| sync.h | File | 7.64 KB | 0644 |
|
| syscall.h | File | 3.45 KB | 0644 |
|
| syscalls.h | File | 1.28 KB | 0644 |
|
| thread_info.h | File | 6.59 KB | 0644 |
|
| time.h | File | 1.58 KB | 0644 |
|
| timex.h | File | 2.87 KB | 0644 |
|
| tlb.h | File | 613 B | 0644 |
|
| tlbdebug.h | File | 403 B | 0644 |
|
| tlbex.h | File | 1014 B | 0644 |
|
| tlbflush.h | File | 1.64 KB | 0644 |
|
| tlbmisc.h | File | 320 B | 0644 |
|
| topology.h | File | 619 B | 0644 |
|
| traps.h | File | 2.39 KB | 0644 |
|
| txx9irq.h | File | 682 B | 0644 |
|
| txx9pio.h | File | 592 B | 0644 |
|
| txx9tmr.h | File | 1.52 KB | 0644 |
|
| types.h | File | 459 B | 0644 |
|
| uaccess.h | File | 14.68 KB | 0644 |
|
| uasm.h | File | 9.44 KB | 0644 |
|
| unaligned-emul.h | File | 26.23 KB | 0644 |
|
| unistd.h | File | 1.83 KB | 0644 |
|
| unroll.h | File | 2.79 KB | 0644 |
|
| uprobes.h | File | 1.11 KB | 0644 |
|
| vdso.h | File | 1.35 KB | 0644 |
|
| vermagic.h | File | 2.06 KB | 0644 |
|
| vga.h | File | 1.12 KB | 0644 |
|
| video.h | File | 875 B | 0644 |
|
| vmalloc.h | File | 90 B | 0644 |
|
| vpe.h | File | 2.53 KB | 0644 |
|
| watch.h | File | 827 B | 0644 |
|
| wbflush.h | File | 694 B | 0644 |
|
| yamon-dt.h | File | 1.68 KB | 0644 |
|