3d91b47b42
Mock architecture can be used to build libpayload using host compiler. It can be enabled by setting ARCH_MOCK=y in the dotconfig. It sets LITTLE_ENDIAN=y, as most machines these days use little-endian CPUs. Libpayload will use HOSTCC as CC, HOSTLD as LD, etc. instead of tools provided by xcompile. Mock architecture configuration can be used by payloads for testing purposes. Thanks to it, tests can be architecture-independent, and can be executed without requiring compatible Kconfig options, e.g. ARCH_ARM64=y for ARM64 machine. However, one has to provide implementation for most architecture-specific functions present in arch/* directories. Signed-off-by: Jakub Czapiga <jacz@semihalf.com> Change-Id: Ie3a6e6f6cad2f8a2e48a8e546d3b79c577653080 Reviewed-on: https://review.coreboot.org/c/coreboot/+/57708 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
29 lines
940 B
C
29 lines
940 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
|
|
#ifndef _ARCH_IO_H
|
|
#define _ARCH_IO_H
|
|
|
|
#include <inttypes.h>
|
|
|
|
/* Functions in this file are unimplemented by default. Tests are expected to implement
|
|
mocks for these functions, if tests will call functions using functions listed below. */
|
|
|
|
uint8_t readb(volatile const void *_a);
|
|
uint16_t readw(volatile const void *_a);
|
|
uint32_t readl(volatile const void *_a);
|
|
|
|
void writeb(uint8_t _v, volatile void *_a);
|
|
void writew(uint16_t _v, volatile void *_a);
|
|
void writel(uint32_t _v, volatile void *_a);
|
|
|
|
uint8_t read8(volatile const void *addr);
|
|
uint16_t read16(volatile const void *addr);
|
|
uint32_t read32(volatile const void *addr);
|
|
uint64_t read64(volatile const void *addr);
|
|
|
|
void write8(volatile void *addr, uint8_t val);
|
|
void write16(volatile void *addr, uint16_t val);
|
|
void write32(volatile void *addr, uint32_t val);
|
|
void write64(volatile void *addr, uint64_t val);
|
|
|
|
#endif /* _ARCH_IO_H */
|