__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ 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-only */
/*
* {read,write}{b,w,l,q} based on arch/arm64/include/asm/io.h
* which was based on arch/arm/include/io.h
*
* Copyright (C) 1996-2000 Russell King
* Copyright (C) 2012 ARM Ltd.
* Copyright (C) 2014 Regents of the University of California
*/
#ifndef _ASM_RISCV_IO_H
#define _ASM_RISCV_IO_H
#include <linux/types.h>
#include <linux/pgtable.h>
#include <asm/mmiowb.h>
#include <asm/early_ioremap.h>
/*
* MMIO access functions are separated out to break dependency cycles
* when using {read,write}* fns in low-level headers
*/
#include <asm/mmio.h>
/*
* I/O port access constants.
*/
#ifdef CONFIG_MMU
#define IO_SPACE_LIMIT (PCI_IO_SIZE - 1)
#define PCI_IOBASE ((void __iomem *)PCI_IO_START)
#endif /* CONFIG_MMU */
/*
* Emulation routines for the port-mapped IO space used by some PCI drivers.
* These are defined as being "fully synchronous", but also "not guaranteed to
* be fully ordered with respect to other memory and I/O operations". We're
* going to be on the safe side here and just make them:
* - Fully ordered WRT each other, by bracketing them with two fences. The
* outer set contains both I/O so inX is ordered with outX, while the inner just
* needs the type of the access (I for inX and O for outX).
* - Ordered in the same manner as readX/writeX WRT memory by subsuming their
* fences.
* - Ordered WRT timer reads, so udelay and friends don't get elided by the
* implementation.
* Note that there is no way to actually enforce that outX is a non-posted
* operation on RISC-V, but hopefully the timer ordering constraint is
* sufficient to ensure this works sanely on controllers that support I/O
* writes.
*/
#define __io_pbr() RISCV_FENCE(io, i)
#define __io_par(v) RISCV_FENCE(i, ior)
#define __io_pbw() RISCV_FENCE(iow, o)
#define __io_paw() RISCV_FENCE(o, io)
/*
* Accesses from a single hart to a single I/O address must be ordered. This
* allows us to use the raw read macros, but we still need to fence before and
* after the block to ensure ordering WRT other macros. These are defined to
* perform host-endian accesses so we use __raw instead of __cpu.
*/
#define __io_reads_ins(port, ctype, len, bfence, afence) \
static inline void __ ## port ## len(const volatile void __iomem *addr, \
void *buffer, \
unsigned int count) \
{ \
bfence; \
if (count) { \
ctype *buf = buffer; \
\
do { \
ctype x = __raw_read ## len(addr); \
*buf++ = x; \
} while (--count); \
} \
afence; \
}
#define __io_writes_outs(port, ctype, len, bfence, afence) \
static inline void __ ## port ## len(volatile void __iomem *addr, \
const void *buffer, \
unsigned int count) \
{ \
bfence; \
if (count) { \
const ctype *buf = buffer; \
\
do { \
__raw_write ## len(*buf++, addr); \
} while (--count); \
} \
afence; \
}
__io_reads_ins(reads, u8, b, __io_br(), __io_ar(addr))
__io_reads_ins(reads, u16, w, __io_br(), __io_ar(addr))
__io_reads_ins(reads, u32, l, __io_br(), __io_ar(addr))
#define readsb(addr, buffer, count) __readsb(addr, buffer, count)
#define readsw(addr, buffer, count) __readsw(addr, buffer, count)
#define readsl(addr, buffer, count) __readsl(addr, buffer, count)
__io_reads_ins(ins, u8, b, __io_pbr(), __io_par(addr))
__io_reads_ins(ins, u16, w, __io_pbr(), __io_par(addr))
__io_reads_ins(ins, u32, l, __io_pbr(), __io_par(addr))
#define insb(addr, buffer, count) __insb(PCI_IOBASE + (addr), buffer, count)
#define insw(addr, buffer, count) __insw(PCI_IOBASE + (addr), buffer, count)
#define insl(addr, buffer, count) __insl(PCI_IOBASE + (addr), buffer, count)
__io_writes_outs(writes, u8, b, __io_bw(), __io_aw())
__io_writes_outs(writes, u16, w, __io_bw(), __io_aw())
__io_writes_outs(writes, u32, l, __io_bw(), __io_aw())
#define writesb(addr, buffer, count) __writesb(addr, buffer, count)
#define writesw(addr, buffer, count) __writesw(addr, buffer, count)
#define writesl(addr, buffer, count) __writesl(addr, buffer, count)
__io_writes_outs(outs, u8, b, __io_pbw(), __io_paw())
__io_writes_outs(outs, u16, w, __io_pbw(), __io_paw())
__io_writes_outs(outs, u32, l, __io_pbw(), __io_paw())
#define outsb(addr, buffer, count) __outsb(PCI_IOBASE + (addr), buffer, count)
#define outsw(addr, buffer, count) __outsw(PCI_IOBASE + (addr), buffer, count)
#define outsl(addr, buffer, count) __outsl(PCI_IOBASE + (addr), buffer, count)
#ifdef CONFIG_64BIT
__io_reads_ins(reads, u64, q, __io_br(), __io_ar(addr))
#define readsq(addr, buffer, count) __readsq(addr, buffer, count)
__io_reads_ins(ins, u64, q, __io_pbr(), __io_par(addr))
#define insq(addr, buffer, count) __insq(PCI_IOBASE + (addr), buffer, count)
__io_writes_outs(writes, u64, q, __io_bw(), __io_aw())
#define writesq(addr, buffer, count) __writesq(addr, buffer, count)
__io_writes_outs(outs, u64, q, __io_pbr(), __io_paw())
#define outsq(addr, buffer, count) __outsq(PCI_IOBASE + (addr), buffer, count)
#endif
#include <asm-generic/io.h>
#ifdef CONFIG_MMU
#define arch_memremap_wb(addr, size) \
((__force void *)ioremap_prot((addr), (size), _PAGE_KERNEL))
#endif
#endif /* _ASM_RISCV_IO_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| vdso | Folder | 0755 |
|
|
| vendor_extensions | Folder | 0755 |
|
|
| Kbuild | File | 453 B | 0644 |
|
| acenv.h | File | 243 B | 0644 |
|
| acpi.h | File | 2.49 KB | 0644 |
|
| alternative-macros.h | File | 5 KB | 0644 |
|
| alternative.h | File | 2.33 KB | 0644 |
|
| arch_hweight.h | File | 1.55 KB | 0644 |
|
| archrandom.h | File | 1.5 KB | 0644 |
|
| asm-extable.h | File | 2.27 KB | 0644 |
|
| asm-offsets.h | File | 35 B | 0644 |
|
| asm-prototypes.h | File | 2.09 KB | 0644 |
|
| asm.h | File | 4.01 KB | 0644 |
|
| assembler.h | File | 2.23 KB | 0644 |
|
| atomic.h | File | 10.25 KB | 0644 |
|
| barrier.h | File | 2.8 KB | 0644 |
|
| bitops.h | File | 9.8 KB | 0644 |
|
| bug.h | File | 2.13 KB | 0644 |
|
| bugs.h | File | 463 B | 0644 |
|
| cache.h | File | 897 B | 0644 |
|
| cacheflush.h | File | 2.67 KB | 0644 |
|
| cacheinfo.h | File | 511 B | 0644 |
|
| cfi.h | File | 810 B | 0644 |
|
| checksum.h | File | 2.48 KB | 0644 |
|
| clint.h | File | 797 B | 0644 |
|
| clocksource.h | File | 136 B | 0644 |
|
| cmpxchg.h | File | 11.44 KB | 0644 |
|
| compat.h | File | 4.05 KB | 0644 |
|
| cpu.h | File | 172 B | 0644 |
|
| cpu_ops.h | File | 971 B | 0644 |
|
| cpu_ops_sbi.h | File | 609 B | 0644 |
|
| cpufeature-macros.h | File | 1.67 KB | 0644 |
|
| cpufeature.h | File | 4.38 KB | 0644 |
|
| cpuidle.h | File | 450 B | 0644 |
|
| crash_reserve.h | File | 291 B | 0644 |
|
| csr.h | File | 16.32 KB | 0644 |
|
| current.h | File | 1001 B | 0644 |
|
| delay.h | File | 471 B | 0644 |
|
| dma-noncoherent.h | File | 835 B | 0644 |
|
| dmi.h | File | 640 B | 0644 |
|
| efi.h | File | 1.18 KB | 0644 |
|
| elf.h | File | 4.64 KB | 0644 |
|
| entry-common.h | File | 1.04 KB | 0644 |
|
| errata_list.h | File | 3.7 KB | 0644 |
|
| exec.h | File | 172 B | 0644 |
|
| extable.h | File | 1.46 KB | 0644 |
|
| fence.h | File | 564 B | 0644 |
|
| fixmap.h | File | 1.75 KB | 0644 |
|
| fpu.h | File | 291 B | 0644 |
|
| ftrace.h | File | 6.12 KB | 0644 |
|
| futex.h | File | 2.42 KB | 0644 |
|
| gdb_xml.h | File | 5.47 KB | 0644 |
|
| gpr-num.h | File | 2.37 KB | 0644 |
|
| hugetlb.h | File | 1.76 KB | 0644 |
|
| hwcap.h | File | 3.58 KB | 0644 |
|
| hwprobe.h | File | 913 B | 0644 |
|
| image.h | File | 1.63 KB | 0644 |
|
| insn-def.h | File | 5.72 KB | 0644 |
|
| insn.h | File | 15.29 KB | 0644 |
|
| io.h | File | 5.19 KB | 0644 |
|
| irq.h | File | 2.09 KB | 0644 |
|
| irq_stack.h | File | 843 B | 0644 |
|
| irq_work.h | File | 225 B | 0644 |
|
| irqflags.h | File | 1.12 KB | 0644 |
|
| jump_label.h | File | 1.6 KB | 0644 |
|
| kasan.h | File | 1.55 KB | 0644 |
|
| kdebug.h | File | 158 B | 0644 |
|
| kexec.h | File | 1.84 KB | 0644 |
|
| kfence.h | File | 674 B | 0644 |
|
| kgdb.h | File | 2.44 KB | 0644 |
|
| kprobes.h | File | 1.19 KB | 0644 |
|
| kvm_aia.h | File | 5.42 KB | 0644 |
|
| kvm_host.h | File | 11.56 KB | 0644 |
|
| kvm_nacl.h | File | 7.52 KB | 0644 |
|
| kvm_types.h | File | 184 B | 0644 |
|
| kvm_vcpu_fp.h | File | 1.69 KB | 0644 |
|
| kvm_vcpu_insn.h | File | 1.21 KB | 0644 |
|
| kvm_vcpu_pmu.h | File | 4.52 KB | 0644 |
|
| kvm_vcpu_sbi.h | File | 3.3 KB | 0644 |
|
| kvm_vcpu_timer.h | File | 1.56 KB | 0644 |
|
| kvm_vcpu_vector.h | File | 2.12 KB | 0644 |
|
| linkage.h | File | 267 B | 0644 |
|
| membarrier.h | File | 1.73 KB | 0644 |
|
| mmio.h | File | 5.17 KB | 0644 |
|
| mmiowb.h | File | 365 B | 0644 |
|
| mmu.h | File | 1.05 KB | 0644 |
|
| mmu_context.h | File | 1.2 KB | 0644 |
|
| module.h | File | 3.3 KB | 0644 |
|
| module.lds.h | File | 207 B | 0644 |
|
| numa.h | File | 165 B | 0644 |
|
| page.h | File | 5.95 KB | 0644 |
|
| paravirt.h | File | 610 B | 0644 |
|
| paravirt_api_clock.h | File | 26 B | 0644 |
|
| pci.h | File | 728 B | 0644 |
|
| perf_event.h | File | 575 B | 0644 |
|
| pgalloc.h | File | 3.83 KB | 0644 |
|
| pgtable-32.h | File | 1.07 KB | 0644 |
|
| pgtable-64.h | File | 9.69 KB | 0644 |
|
| pgtable-bits.h | File | 1.32 KB | 0644 |
|
| pgtable.h | File | 25.35 KB | 0644 |
|
| probes.h | File | 563 B | 0644 |
|
| processor.h | File | 6.31 KB | 0644 |
|
| ptrace.h | File | 4.3 KB | 0644 |
|
| sbi.h | File | 15.98 KB | 0644 |
|
| scs.h | File | 1.08 KB | 0644 |
|
| seccomp.h | File | 504 B | 0644 |
|
| sections.h | File | 883 B | 0644 |
|
| semihost.h | File | 596 B | 0644 |
|
| set_memory.h | File | 2.03 KB | 0644 |
|
| signal32.h | File | 358 B | 0644 |
|
| simd.h | File | 1.73 KB | 0644 |
|
| smp.h | File | 2.51 KB | 0644 |
|
| soc.h | File | 627 B | 0644 |
|
| sparsemem.h | File | 331 B | 0644 |
|
| spinlock.h | File | 1.27 KB | 0644 |
|
| stackprotector.h | File | 589 B | 0644 |
|
| stacktrace.h | File | 774 B | 0644 |
|
| string.h | File | 1.4 KB | 0644 |
|
| suspend.h | File | 1.81 KB | 0644 |
|
| switch_to.h | File | 3.32 KB | 0644 |
|
| sync_core.h | File | 689 B | 0644 |
|
| syscall.h | File | 2.48 KB | 0644 |
|
| syscall_table.h | File | 137 B | 0644 |
|
| syscall_wrapper.h | File | 3.96 KB | 0644 |
|
| text-patching.h | File | 449 B | 0644 |
|
| thread_info.h | File | 3.97 KB | 0644 |
|
| timex.h | File | 1.79 KB | 0644 |
|
| tlb.h | File | 582 B | 0644 |
|
| tlbbatch.h | File | 273 B | 0644 |
|
| tlbflush.h | File | 2.15 KB | 0644 |
|
| topology.h | File | 822 B | 0644 |
|
| trace.h | File | 1.03 KB | 0644 |
|
| uaccess.h | File | 10.62 KB | 0644 |
|
| unistd.h | File | 719 B | 0644 |
|
| uprobes.h | File | 1.04 KB | 0644 |
|
| vdso.h | File | 965 B | 0644 |
|
| vector.h | File | 11.37 KB | 0644 |
|
| vendor_extensions.h | File | 3.17 KB | 0644 |
|
| vendorid_list.h | File | 268 B | 0644 |
|
| vermagic.h | File | 213 B | 0644 |
|
| vmalloc.h | File | 574 B | 0644 |
|
| word-at-a-time.h | File | 1.72 KB | 0644 |
|
| xip_fixup.h | File | 1.45 KB | 0644 |
|
| xor.h | File | 1.65 KB | 0644 |
|