mirror of
https://github.com/t2linux/kernel.git
synced 2026-04-30 13:48:59 -07:00
Merge branch 'parisc-5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc updates from Helge Deller: - Added fw_cfg support for parisc on qemu - Added font support in sti text console driver for byte- and word-mode ROMs - Switch to more fine grained lws locks and improve spinlock handling - Add ioread64_hi_lo() and iowrite64_hi_lo() to avoid 0-day linking errors - Mark pointers volatile in __xchg8(), __xchg32() and __xchg64() to help compiler - Header file cleanups, mostly removal of unused HP-UX compat defines - Drop one bit from our O_NONBLOCK define to become now 000200000 - Add MAP_UNINITIALIZED define to avoid userspace compile errors - Drop CONFIG_IDE from defconfigs - Speed up synchronize_caches() on UP machines - Rewrite tlb flush threshold calculation - Comment fixes and cleanups * 'parisc-5.10-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc/sticon: Add user font support parisc/sticon: Always register sticon console driver parisc: Add MAP_UNINITIALIZED define parisc: Improve spinlock handling parisc: Install vmlinuz instead of zImage file parisc: Rewrite tlb flush threshold calculation parisc: Switch to more fine grained lws locks parisc: Mark pointers volatile in __xchg8(), __xchg32() and __xchg64() parisc: Fix comments and enable interrupts later parisc: Add alternative patching to synchronize_caches define parisc: Add ioread64_hi_lo() and iowrite64_hi_lo() parisc: disable CONFIG_IDE in defconfigs parisc: Drop useless comments in uapi/asm/signal.h parisc: Define O_NONBLOCK to become 000200000 parisc: Drop HP-UX specific fcntl and signal flags parisc: Avoid external interrupts when IPI finishes parisc: Add qemu fw_cfg interface fw_cfg: Add support for parisc architecture
This commit is contained in:
@@ -375,5 +375,6 @@ config KEXEC_FILE
|
||||
|
||||
endmenu
|
||||
|
||||
source "drivers/firmware/Kconfig"
|
||||
|
||||
source "drivers/parisc/Kconfig"
|
||||
|
||||
@@ -52,10 +52,6 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_CRYPTOLOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=6144
|
||||
CONFIG_IDE=y
|
||||
CONFIG_BLK_DEV_IDECD=y
|
||||
CONFIG_BLK_DEV_GENERIC=y
|
||||
CONFIG_BLK_DEV_NS87415=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_ST=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
@@ -65,6 +61,8 @@ CONFIG_SCSI_SYM53C8XX_2=y
|
||||
CONFIG_SCSI_ZALON=y
|
||||
CONFIG_SCSI_DH=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_ATA_GENERIC=y
|
||||
CONFIG_PATA_NS87415=y
|
||||
CONFIG_MD=y
|
||||
CONFIG_BLK_DEV_MD=m
|
||||
CONFIG_MD_LINEAR=m
|
||||
|
||||
@@ -58,11 +58,6 @@ CONFIG_PCI_IOV=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_IDE=y
|
||||
CONFIG_IDE_GD=m
|
||||
CONFIG_IDE_GD_ATAPI=y
|
||||
CONFIG_BLK_DEV_IDECD=m
|
||||
CONFIG_BLK_DEV_NS87415=y
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_DEV_SR=y
|
||||
@@ -76,6 +71,7 @@ CONFIG_SCSI_ZALON=y
|
||||
CONFIG_SCSI_QLA_ISCSI=m
|
||||
CONFIG_SCSI_DH=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_PATA_NS87415=y
|
||||
CONFIG_PATA_SIL680=y
|
||||
CONFIG_ATA_GENERIC=y
|
||||
CONFIG_MD=y
|
||||
|
||||
@@ -2,11 +2,15 @@
|
||||
#ifndef __ASM_BARRIER_H
|
||||
#define __ASM_BARRIER_H
|
||||
|
||||
#include <asm/alternative.h>
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
/* The synchronize caches instruction executes as a nop on systems in
|
||||
which all memory references are performed in order. */
|
||||
#define synchronize_caches() __asm__ __volatile__ ("sync" : : : "memory")
|
||||
#define synchronize_caches() asm volatile("sync" \
|
||||
ALTERNATIVE(ALT_COND_NO_SMP, INSN_NOP) \
|
||||
: : : "memory")
|
||||
|
||||
#if defined(CONFIG_SMP)
|
||||
#define mb() do { synchronize_caches(); } while (0)
|
||||
|
||||
@@ -14,22 +14,22 @@
|
||||
extern void __xchg_called_with_bad_pointer(void);
|
||||
|
||||
/* __xchg32/64 defined in arch/parisc/lib/bitops.c */
|
||||
extern unsigned long __xchg8(char, char *);
|
||||
extern unsigned long __xchg32(int, int *);
|
||||
extern unsigned long __xchg8(char, volatile char *);
|
||||
extern unsigned long __xchg32(int, volatile int *);
|
||||
#ifdef CONFIG_64BIT
|
||||
extern unsigned long __xchg64(unsigned long, unsigned long *);
|
||||
extern unsigned long __xchg64(unsigned long, volatile unsigned long *);
|
||||
#endif
|
||||
|
||||
/* optimizer better get rid of switch since size is a constant */
|
||||
static inline unsigned long
|
||||
__xchg(unsigned long x, __volatile__ void *ptr, int size)
|
||||
__xchg(unsigned long x, volatile void *ptr, int size)
|
||||
{
|
||||
switch (size) {
|
||||
#ifdef CONFIG_64BIT
|
||||
case 8: return __xchg64(x, (unsigned long *) ptr);
|
||||
case 8: return __xchg64(x, (volatile unsigned long *) ptr);
|
||||
#endif
|
||||
case 4: return __xchg32((int) x, (int *) ptr);
|
||||
case 1: return __xchg8((char) x, (char *) ptr);
|
||||
case 4: return __xchg32((int) x, (volatile int *) ptr);
|
||||
case 1: return __xchg8((char) x, (volatile char *) ptr);
|
||||
}
|
||||
__xchg_called_with_bad_pointer();
|
||||
return x;
|
||||
|
||||
@@ -16,7 +16,7 @@ static inline void
|
||||
_futex_spin_lock_irqsave(u32 __user *uaddr, unsigned long int *flags)
|
||||
{
|
||||
extern u32 lws_lock_start[];
|
||||
long index = ((long)uaddr & 0xf0) >> 2;
|
||||
long index = ((long)uaddr & 0x3f8) >> 1;
|
||||
arch_spinlock_t *s = (arch_spinlock_t *)&lws_lock_start[index];
|
||||
local_irq_save(*flags);
|
||||
arch_spin_lock(s);
|
||||
@@ -26,7 +26,7 @@ static inline void
|
||||
_futex_spin_unlock_irqrestore(u32 __user *uaddr, unsigned long int *flags)
|
||||
{
|
||||
extern u32 lws_lock_start[];
|
||||
long index = ((long)uaddr & 0xf0) >> 2;
|
||||
long index = ((long)uaddr & 0x3f8) >> 1;
|
||||
arch_spinlock_t *s = (arch_spinlock_t *)&lws_lock_start[index];
|
||||
arch_spin_unlock(s);
|
||||
local_irq_restore(*flags);
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
#include <uapi/asm/socket.h>
|
||||
|
||||
/* O_NONBLOCK clashes with the bits used for socket types. Therefore we
|
||||
* have to define SOCK_NONBLOCK to a different value here.
|
||||
/* O_NONBLOCK clashed with the bits used for socket types. Therefore we
|
||||
* had to define SOCK_NONBLOCK to a different value here.
|
||||
*/
|
||||
#define SOCK_NONBLOCK 0x40000000
|
||||
|
||||
|
||||
@@ -10,13 +10,21 @@
|
||||
static inline int arch_spin_is_locked(arch_spinlock_t *x)
|
||||
{
|
||||
volatile unsigned int *a = __ldcw_align(x);
|
||||
return *a == 0;
|
||||
return READ_ONCE(*a) == 0;
|
||||
}
|
||||
|
||||
#define arch_spin_lock(lock) arch_spin_lock_flags(lock, 0)
|
||||
static inline void arch_spin_lock(arch_spinlock_t *x)
|
||||
{
|
||||
volatile unsigned int *a;
|
||||
|
||||
a = __ldcw_align(x);
|
||||
while (__ldcw(a) == 0)
|
||||
while (*a == 0)
|
||||
continue;
|
||||
}
|
||||
|
||||
static inline void arch_spin_lock_flags(arch_spinlock_t *x,
|
||||
unsigned long flags)
|
||||
unsigned long flags)
|
||||
{
|
||||
volatile unsigned int *a;
|
||||
|
||||
@@ -25,10 +33,8 @@ static inline void arch_spin_lock_flags(arch_spinlock_t *x,
|
||||
while (*a == 0)
|
||||
if (flags & PSW_SM_I) {
|
||||
local_irq_enable();
|
||||
cpu_relax();
|
||||
local_irq_disable();
|
||||
} else
|
||||
cpu_relax();
|
||||
}
|
||||
}
|
||||
#define arch_spin_lock_flags arch_spin_lock_flags
|
||||
|
||||
@@ -44,12 +50,9 @@ static inline void arch_spin_unlock(arch_spinlock_t *x)
|
||||
static inline int arch_spin_trylock(arch_spinlock_t *x)
|
||||
{
|
||||
volatile unsigned int *a;
|
||||
int ret;
|
||||
|
||||
a = __ldcw_align(x);
|
||||
ret = __ldcw(a) != 0;
|
||||
|
||||
return ret;
|
||||
return __ldcw(a) != 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -3,22 +3,19 @@
|
||||
#define _PARISC_FCNTL_H
|
||||
|
||||
#define O_APPEND 000000010
|
||||
#define O_BLKSEEK 000000100 /* HPUX only */
|
||||
#define O_CREAT 000000400 /* not fcntl */
|
||||
#define O_EXCL 000002000 /* not fcntl */
|
||||
#define O_LARGEFILE 000004000
|
||||
#define __O_SYNC 000100000
|
||||
#define O_SYNC (__O_SYNC|O_DSYNC)
|
||||
#define O_NONBLOCK 000200004 /* HPUX has separate NDELAY & NONBLOCK */
|
||||
#define O_NONBLOCK 000200000
|
||||
#define O_NOCTTY 000400000 /* not fcntl */
|
||||
#define O_DSYNC 001000000 /* HPUX only */
|
||||
#define O_RSYNC 002000000 /* HPUX only */
|
||||
#define O_DSYNC 001000000
|
||||
#define O_NOATIME 004000000
|
||||
#define O_CLOEXEC 010000000 /* set close_on_exec */
|
||||
|
||||
#define O_DIRECTORY 000010000 /* must be a directory */
|
||||
#define O_NOFOLLOW 000000200 /* don't follow links */
|
||||
#define O_INVISIBLE 004000000 /* invisible I/O, for DMAPI/XDSM */
|
||||
|
||||
#define O_PATH 020000000
|
||||
#define __O_TMPFILE 040000000
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#define MAP_STACK 0x40000 /* give out an address that is best suited for process/thread stacks */
|
||||
#define MAP_HUGETLB 0x80000 /* create a huge page mapping */
|
||||
#define MAP_FIXED_NOREPLACE 0x100000 /* MAP_FIXED which doesn't unmap underlying mapping */
|
||||
#define MAP_UNINITIALIZED 0 /* uninitialized anonymous mmap */
|
||||
|
||||
#define MS_SYNC 1 /* synchronous memory sync */
|
||||
#define MS_ASYNC 2 /* sync memory asynchronously */
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
#define SIGURG 29
|
||||
#define SIGXFSZ 30
|
||||
#define SIGUNUSED 31
|
||||
#define SIGSYS 31 /* Linux doesn't use this */
|
||||
#define SIGSYS 31
|
||||
|
||||
/* These should not be considered constants from userland. */
|
||||
#define SIGRTMIN 32
|
||||
#define SIGRTMAX _NSIG /* it's 44 under HP/UX */
|
||||
#define SIGRTMAX _NSIG
|
||||
|
||||
/*
|
||||
* SA_FLAGS values:
|
||||
@@ -61,7 +61,6 @@
|
||||
#define SA_NODEFER 0x00000020
|
||||
#define SA_RESTART 0x00000040
|
||||
#define SA_NOCLDWAIT 0x00000080
|
||||
#define _SA_SIGGFAULT 0x00000100 /* HPUX */
|
||||
|
||||
#define SA_NOMASK SA_NODEFER
|
||||
#define SA_ONESHOT SA_RESETHAND
|
||||
|
||||
@@ -43,7 +43,7 @@ fi
|
||||
|
||||
# Default install
|
||||
|
||||
if [ "$(basename $2)" = "zImage" ]; then
|
||||
if [ "$(basename $2)" = "vmlinuz" ]; then
|
||||
# Compressed install
|
||||
echo "Installing compressed kernel"
|
||||
base=vmlinuz
|
||||
|
||||
@@ -383,12 +383,12 @@ EXPORT_SYMBOL(flush_kernel_icache_range_asm);
|
||||
static unsigned long parisc_cache_flush_threshold __ro_after_init = FLUSH_THRESHOLD;
|
||||
|
||||
#define FLUSH_TLB_THRESHOLD (16*1024) /* 16 KiB minimum TLB threshold */
|
||||
static unsigned long parisc_tlb_flush_threshold __ro_after_init = FLUSH_TLB_THRESHOLD;
|
||||
static unsigned long parisc_tlb_flush_threshold __ro_after_init = ~0UL;
|
||||
|
||||
void __init parisc_setup_cache_timing(void)
|
||||
{
|
||||
unsigned long rangetime, alltime;
|
||||
unsigned long size, start;
|
||||
unsigned long size;
|
||||
unsigned long threshold;
|
||||
|
||||
alltime = mfctl(16);
|
||||
@@ -422,14 +422,9 @@ void __init parisc_setup_cache_timing(void)
|
||||
goto set_tlb_threshold;
|
||||
}
|
||||
|
||||
size = 0;
|
||||
start = (unsigned long) _text;
|
||||
size = (unsigned long)_end - (unsigned long)_text;
|
||||
rangetime = mfctl(16);
|
||||
while (start < (unsigned long) _end) {
|
||||
flush_tlb_kernel_range(start, start + PAGE_SIZE);
|
||||
start += PAGE_SIZE;
|
||||
size += PAGE_SIZE;
|
||||
}
|
||||
flush_tlb_kernel_range((unsigned long)_text, (unsigned long)_end);
|
||||
rangetime = mfctl(16) - rangetime;
|
||||
|
||||
alltime = mfctl(16);
|
||||
@@ -444,8 +439,11 @@ void __init parisc_setup_cache_timing(void)
|
||||
threshold/1024);
|
||||
|
||||
set_tlb_threshold:
|
||||
if (threshold > parisc_tlb_flush_threshold)
|
||||
if (threshold > FLUSH_TLB_THRESHOLD)
|
||||
parisc_tlb_flush_threshold = threshold;
|
||||
else
|
||||
parisc_tlb_flush_threshold = FLUSH_TLB_THRESHOLD;
|
||||
|
||||
printk(KERN_INFO "TLB flush threshold set to %lu KiB\n",
|
||||
parisc_tlb_flush_threshold/1024);
|
||||
}
|
||||
|
||||
@@ -899,20 +899,20 @@ intr_check_sig:
|
||||
* Only do signals if we are returning to user space
|
||||
*/
|
||||
LDREG PT_IASQ0(%r16), %r20
|
||||
cmpib,COND(=),n LINUX_GATEWAY_SPACE, %r20, intr_restore /* backward */
|
||||
cmpib,COND(=),n LINUX_GATEWAY_SPACE, %r20, intr_restore /* forward */
|
||||
LDREG PT_IASQ1(%r16), %r20
|
||||
cmpib,COND(=),n LINUX_GATEWAY_SPACE, %r20, intr_restore /* backward */
|
||||
|
||||
/* NOTE: We need to enable interrupts if we have to deliver
|
||||
* signals. We used to do this earlier but it caused kernel
|
||||
* stack overflows. */
|
||||
ssm PSW_SM_I, %r0
|
||||
cmpib,COND(=),n LINUX_GATEWAY_SPACE, %r20, intr_restore /* forward */
|
||||
|
||||
copy %r0, %r25 /* long in_syscall = 0 */
|
||||
#ifdef CONFIG_64BIT
|
||||
ldo -16(%r30),%r29 /* Reference param save area */
|
||||
#endif
|
||||
|
||||
/* NOTE: We need to enable interrupts if we have to deliver
|
||||
* signals. We used to do this earlier but it caused kernel
|
||||
* stack overflows. */
|
||||
ssm PSW_SM_I, %r0
|
||||
|
||||
BL do_notify_resume,%r2
|
||||
copy %r16, %r26 /* struct pt_regs *regs */
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <asm/hardware.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/mmzone.h>
|
||||
@@ -641,4 +642,33 @@ void __init do_device_inventory(void)
|
||||
if (pa_serialize_tlb_flushes)
|
||||
pr_info("Merced bus found: Enable PxTLB serialization.\n");
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FW_CFG_SYSFS)
|
||||
if (running_on_qemu) {
|
||||
struct resource res[3] = {0,};
|
||||
unsigned int base;
|
||||
|
||||
base = ((unsigned long long) PAGE0->pad0[2] << 32)
|
||||
| PAGE0->pad0[3]; /* SeaBIOS stored it here */
|
||||
|
||||
res[0].name = "fw_cfg";
|
||||
res[0].start = base;
|
||||
res[0].end = base + 8 - 1;
|
||||
res[0].flags = IORESOURCE_MEM;
|
||||
|
||||
res[1].name = "ctrl";
|
||||
res[1].start = 0;
|
||||
res[1].flags = IORESOURCE_REG;
|
||||
|
||||
res[2].name = "data";
|
||||
res[2].start = 4;
|
||||
res[2].flags = IORESOURCE_REG;
|
||||
|
||||
if (base) {
|
||||
pr_info("Found qemu fw_cfg interface at %#08x\n", base);
|
||||
platform_device_register_simple("fw_cfg",
|
||||
PLATFORM_DEVID_NONE, res, 3);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -173,9 +173,12 @@ ipi_interrupt(int irq, void *dev_id)
|
||||
this_cpu, which);
|
||||
return IRQ_NONE;
|
||||
} /* Switch */
|
||||
/* let in any pending interrupts */
|
||||
local_irq_enable();
|
||||
local_irq_disable();
|
||||
|
||||
/* before doing more, let in any pending interrupts */
|
||||
if (ops) {
|
||||
local_irq_enable();
|
||||
local_irq_disable();
|
||||
}
|
||||
} /* while (ops) */
|
||||
}
|
||||
return IRQ_HANDLED;
|
||||
|
||||
@@ -571,8 +571,8 @@ lws_compare_and_swap:
|
||||
ldil L%lws_lock_start, %r20
|
||||
ldo R%lws_lock_start(%r20), %r28
|
||||
|
||||
/* Extract four bits from r26 and hash lock (Bits 4-7) */
|
||||
extru %r26, 27, 4, %r20
|
||||
/* Extract eight bits from r26 and hash lock (Bits 3-11) */
|
||||
extru %r26, 28, 8, %r20
|
||||
|
||||
/* Find lock to use, the hash is either one of 0 to
|
||||
15, multiplied by 16 (keep it 16-byte aligned)
|
||||
@@ -761,8 +761,8 @@ cas2_lock_start:
|
||||
ldil L%lws_lock_start, %r20
|
||||
ldo R%lws_lock_start(%r20), %r28
|
||||
|
||||
/* Extract four bits from r26 and hash lock (Bits 4-7) */
|
||||
extru %r26, 27, 4, %r20
|
||||
/* Extract eight bits from r26 and hash lock (Bits 3-11) */
|
||||
extru %r26, 28, 8, %r20
|
||||
|
||||
/* Find lock to use, the hash is either one of 0 to
|
||||
15, multiplied by 16 (keep it 16-byte aligned)
|
||||
@@ -950,7 +950,7 @@ END(sys_call_table64)
|
||||
.align L1_CACHE_BYTES
|
||||
ENTRY(lws_lock_start)
|
||||
/* lws locks */
|
||||
.rept 16
|
||||
.rept 256
|
||||
/* Keep locks aligned at 16-bytes */
|
||||
.word 1
|
||||
.word 0
|
||||
|
||||
@@ -18,7 +18,7 @@ arch_spinlock_t __atomic_hash[ATOMIC_HASH_SIZE] __lock_aligned = {
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
unsigned long __xchg64(unsigned long x, unsigned long *ptr)
|
||||
unsigned long __xchg64(unsigned long x, volatile unsigned long *ptr)
|
||||
{
|
||||
unsigned long temp, flags;
|
||||
|
||||
@@ -30,7 +30,7 @@ unsigned long __xchg64(unsigned long x, unsigned long *ptr)
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned long __xchg32(int x, int *ptr)
|
||||
unsigned long __xchg32(int x, volatile int *ptr)
|
||||
{
|
||||
unsigned long flags;
|
||||
long temp;
|
||||
@@ -43,7 +43,7 @@ unsigned long __xchg32(int x, int *ptr)
|
||||
}
|
||||
|
||||
|
||||
unsigned long __xchg8(char x, char *ptr)
|
||||
unsigned long __xchg8(char x, volatile char *ptr)
|
||||
{
|
||||
unsigned long flags;
|
||||
long temp;
|
||||
|
||||
@@ -346,6 +346,16 @@ u64 ioread64be(const void __iomem *addr)
|
||||
return *((u64 *)addr);
|
||||
}
|
||||
|
||||
u64 ioread64_hi_lo(const void __iomem *addr)
|
||||
{
|
||||
u32 low, high;
|
||||
|
||||
high = ioread32(addr + sizeof(u32));
|
||||
low = ioread32(addr);
|
||||
|
||||
return low + ((u64)high << 32);
|
||||
}
|
||||
|
||||
void iowrite8(u8 datum, void __iomem *addr)
|
||||
{
|
||||
if (unlikely(INDIRECT_ADDR(addr))) {
|
||||
@@ -409,6 +419,12 @@ void iowrite64be(u64 datum, void __iomem *addr)
|
||||
}
|
||||
}
|
||||
|
||||
void iowrite64_hi_lo(u64 val, void __iomem *addr)
|
||||
{
|
||||
iowrite32(val >> 32, addr + sizeof(u32));
|
||||
iowrite32(val, addr);
|
||||
}
|
||||
|
||||
/* Repeating interfaces */
|
||||
|
||||
void ioread8_rep(const void __iomem *addr, void *dst, unsigned long count)
|
||||
@@ -511,6 +527,7 @@ EXPORT_SYMBOL(ioread32);
|
||||
EXPORT_SYMBOL(ioread32be);
|
||||
EXPORT_SYMBOL(ioread64);
|
||||
EXPORT_SYMBOL(ioread64be);
|
||||
EXPORT_SYMBOL(ioread64_hi_lo);
|
||||
EXPORT_SYMBOL(iowrite8);
|
||||
EXPORT_SYMBOL(iowrite16);
|
||||
EXPORT_SYMBOL(iowrite16be);
|
||||
@@ -518,6 +535,7 @@ EXPORT_SYMBOL(iowrite32);
|
||||
EXPORT_SYMBOL(iowrite32be);
|
||||
EXPORT_SYMBOL(iowrite64);
|
||||
EXPORT_SYMBOL(iowrite64be);
|
||||
EXPORT_SYMBOL(iowrite64_hi_lo);
|
||||
EXPORT_SYMBOL(ioread8_rep);
|
||||
EXPORT_SYMBOL(ioread16_rep);
|
||||
EXPORT_SYMBOL(ioread32_rep);
|
||||
|
||||
@@ -186,7 +186,7 @@ config RASPBERRYPI_FIRMWARE
|
||||
|
||||
config FW_CFG_SYSFS
|
||||
tristate "QEMU fw_cfg device support in sysfs"
|
||||
depends on SYSFS && (ARM || ARM64 || PPC_PMAC || SPARC || X86)
|
||||
depends on SYSFS && (ARM || ARM64 || PARISC || PPC_PMAC || SPARC || X86)
|
||||
depends on HAS_IOPORT_MAP
|
||||
default n
|
||||
help
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user