Add samsung specific changes
This commit is contained in:
@@ -42,7 +42,12 @@ config UML_DMA_EMULATION
|
||||
config NO_IOMEM
|
||||
bool "disable IOMEM" if EXPERT
|
||||
depends on !INDIRECT_IOMEM
|
||||
default y
|
||||
default y if !KUNIT
|
||||
|
||||
config HAS_IOMEM
|
||||
bool "Turns on fake IOMEM support for KUnit"
|
||||
depends on KUNIT
|
||||
select MOCK_IOMEM
|
||||
|
||||
config UML_IOMEM_EMULATION
|
||||
bool
|
||||
@@ -225,6 +230,11 @@ config UML_TIME_TRAVEL_SUPPORT
|
||||
|
||||
It is safe to say Y, but you probably don't need this.
|
||||
|
||||
config PLATFORM_MOCK
|
||||
bool "Enable a mock architecture used for unit testing."
|
||||
depends on SEC_KUNIT && OF
|
||||
default y
|
||||
|
||||
config KASAN_SHADOW_OFFSET
|
||||
hex
|
||||
depends on KASAN
|
||||
|
63
arch/um/include/asm/io-mock-shared.h
Normal file
63
arch/um/include/asm/io-mock-shared.h
Normal file
@@ -0,0 +1,63 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef _ASM_UM_IO_MOCK_SHARED_H
|
||||
#define _ASM_UM_IO_MOCK_SHARED_H
|
||||
|
||||
#define readb readb
|
||||
u8 readb(const volatile void __iomem *);
|
||||
|
||||
#define readw readw
|
||||
u16 readw(const volatile void __iomem *);
|
||||
|
||||
#define readl readl
|
||||
u32 readl(const volatile void __iomem *);
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define readq readq
|
||||
u64 readq(const volatile void __iomem *);
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
#define writeb writeb
|
||||
void writeb(u8, const volatile void __iomem *);
|
||||
|
||||
#define writew writew
|
||||
void writew(u16, const volatile void __iomem *);
|
||||
|
||||
#define writel writel
|
||||
void writel(u32, const volatile void __iomem *);
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define writeq writeq
|
||||
void writeq(u64, const volatile void __iomem *);
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
|
||||
|
||||
#define readb_relaxed readb_relaxed
|
||||
u8 readb_relaxed(const volatile void __iomem *);
|
||||
|
||||
#define readw_relaxed readw_relaxed
|
||||
u16 readw_relaxed(const volatile void __iomem *);
|
||||
|
||||
#define readl_relaxed readl_relaxed
|
||||
u32 readl_relaxed(const volatile void __iomem *);
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define readq_relaxed readq_relaxed
|
||||
u64 readq_relaxed(const volatile void __iomem *);
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
#define writeb_relaxed writeb_relaxed
|
||||
void writeb_relaxed(u8, const volatile void __iomem *);
|
||||
|
||||
#define writew_relaxed writew_relaxed
|
||||
void writew_relaxed(u16, const volatile void __iomem *);
|
||||
|
||||
#define writel_relaxed writel_relaxed
|
||||
void writel_relaxed(u32, const volatile void __iomem *);
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define writeq_relaxed writeq_relaxed
|
||||
void writeq_relaxed(u64, const volatile void __iomem *);
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
#endif /* _ASM_UM_IO_MOCK_SHARED_H */
|
74
arch/um/include/asm/io-mock.h
Normal file
74
arch/um/include/asm/io-mock.h
Normal file
@@ -0,0 +1,74 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Mock IO functions.
|
||||
*
|
||||
* Copyright (C) 2018, Google LLC.
|
||||
* Author: Brendan Higgins <brendanhiggins@google.com>
|
||||
*/
|
||||
|
||||
#ifndef _ASM_UM_IO_MOCK_H
|
||||
#define _ASM_UM_IO_MOCK_H
|
||||
|
||||
#include <asm/io-mock-shared.h>
|
||||
#include <kunit/mock.h>
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readb,
|
||||
RETURNS(u8), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readw,
|
||||
RETURNS(u16), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readl,
|
||||
RETURNS(u32), PARAMS(const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DECLARE_FUNCTION_MOCK(readq,
|
||||
RETURNS(u64), PARAMS(const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writeb,
|
||||
PARAMS(u8, const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writew,
|
||||
PARAMS(u16, const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writel,
|
||||
PARAMS(u32, const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writeq,
|
||||
PARAMS(u64, const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readb_relaxed,
|
||||
RETURNS(u8), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readw_relaxed,
|
||||
RETURNS(u16), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK(readl_relaxed,
|
||||
RETURNS(u32), PARAMS(const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DECLARE_FUNCTION_MOCK(readq_relaxed,
|
||||
RETURNS(u64), PARAMS(const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writeb_relaxed,
|
||||
PARAMS(u8, const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writew_relaxed,
|
||||
PARAMS(u16, const volatile void __iomem *));
|
||||
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writel_relaxed,
|
||||
PARAMS(u32, const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DECLARE_FUNCTION_MOCK_VOID_RETURN(writeq_relaxed,
|
||||
PARAMS(u64, const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
|
||||
#endif /* _ASM_UM_IO_MOCK_H */
|
@@ -2,6 +2,11 @@
|
||||
#ifndef _ASM_UM_IO_H
|
||||
#define _ASM_UM_IO_H
|
||||
#include <linux/types.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#if IS_ENABLED(CONFIG_PLATFORM_MOCK)
|
||||
#include <asm/io-mock-shared.h>
|
||||
#endif
|
||||
|
||||
/* get emulated iomem (if desired) */
|
||||
#include <asm-generic/logic_io.h>
|
||||
@@ -13,6 +18,7 @@ static inline void __iomem *ioremap(phys_addr_t offset, size_t size)
|
||||
return NULL;
|
||||
}
|
||||
#endif /* ioremap */
|
||||
#define ioremap_nocache ioremap
|
||||
|
||||
#ifndef iounmap
|
||||
#define iounmap iounmap
|
||||
|
@@ -26,6 +26,7 @@ obj-$(CONFIG_OF) += dtb.o
|
||||
obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
|
||||
obj-$(CONFIG_STACKTRACE) += stacktrace.o
|
||||
obj-$(CONFIG_GENERIC_PCI_IOMAP) += ioport.o
|
||||
obj-$(CONFIG_PLATFORM_MOCK) += io-mock.o
|
||||
|
||||
USER_OBJS := config.o
|
||||
|
||||
|
40
arch/um/kernel/io-mock.c
Normal file
40
arch/um/kernel/io-mock.c
Normal file
@@ -0,0 +1,40 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Mock IO functions.
|
||||
*
|
||||
* Copyright (C) 2018, Google LLC.
|
||||
* Author: Brendan Higgins <brendanhiggins@google.com>
|
||||
*/
|
||||
|
||||
#include <linux/mm.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <kunit/mock.h>
|
||||
|
||||
DEFINE_FUNCTION_MOCK(readb,
|
||||
RETURNS(u8), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DEFINE_FUNCTION_MOCK(readw,
|
||||
RETURNS(u16), PARAMS(const volatile void __iomem *));
|
||||
|
||||
DEFINE_FUNCTION_MOCK(readl,
|
||||
RETURNS(u32), PARAMS(const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DEFINE_FUNCTION_MOCK(readq,
|
||||
RETURNS(u64), PARAMS(const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
||||
|
||||
DEFINE_FUNCTION_MOCK_VOID_RETURN(writeb,
|
||||
PARAMS(u8, const volatile void __iomem *));
|
||||
|
||||
DEFINE_FUNCTION_MOCK_VOID_RETURN(writew,
|
||||
PARAMS(u16, const volatile void __iomem *));
|
||||
|
||||
DEFINE_FUNCTION_MOCK_VOID_RETURN(writel,
|
||||
PARAMS(u32, const volatile void __iomem *));
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
DEFINE_FUNCTION_MOCK_VOID_RETURN(writeq,
|
||||
PARAMS(u64, const volatile void __iomem *));
|
||||
#endif /* CONFIG_64BIT */
|
Reference in New Issue
Block a user