soc: riscv: litex: soc.h: add litex_write64

add function for a 64-bit write in litex.

Signed-off-by: Fin Maaß <f.maass@vogl-electronic.com>
This commit is contained in:
Fin Maaß 2024-06-21 16:31:05 +02:00 committed by Anas Nashif
commit c3752bf442

View file

@ -103,6 +103,27 @@ static inline void litex_write32(unsigned int value, unsigned long addr)
#endif
}
static inline void litex_write64(uint64_t value, unsigned long addr)
{
#if CONFIG_LITEX_CSR_DATA_WIDTH == 8
sys_write8(value >> 56, addr);
sys_write8(value >> 48, addr + 0x4);
sys_write8(value >> 40, addr + 0x8);
sys_write8(value >> 32, addr + 0xC);
sys_write8(value >> 24, addr + 0x10);
sys_write8(value >> 16, addr + 0x14);
sys_write8(value >> 8, addr + 0x18);
sys_write8(value, addr + 0x1C);
#elif CONFIG_LITEX_CSR_DATA_WIDTH == 32
sys_write32(value >> 32, addr);
sys_write32(value, addr + 0x4);
#elif CONFIG_LITEX_CSR_DATA_WIDTH >= 64
sys_write64(value, addr);
#else
#error Unsupported CSR data width
#endif
}
/*
* Operates on uint32_t values only
* Size is in bytes and meaningful are 1, 2 or 4