b68674a1da
These are all the changes from https://github.com/riscv/riscv-openocd (approximately 91dc0c0c) made just to src/target/riscv/*. Some of the new code is disabled because it requires some other target-independent changes which I didn't want to include here. Built like this, OpenOCD passes: * All single-RV32 tests against spike. * All single-RV64 tests against spike. * Enough HiFive1 tests. (I suspect the failures are due to the test suite rotting.) * Many dual-RV32 (-rtos hwthread) against spike. * Many dual-RV64 (-rtos hwthread) against spike. I suspect this is an overall improvement compared to what's in mainline right now, and it gets me a lot closer to getting all the riscv-openocd work upstreamed. Change-Id: Ide2f80c9397400780ff6780d78a206bc6a6e2f98 Signed-off-by: Tim Newsome <tim@sifive.com> Reviewed-on: http://openocd.zylin.com/5821 Tested-by: jenkins Reviewed-by: Jan Matyas <matyas@codasip.com> Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-by: Karl Palsson <karlp@tweak.net.au>
41 lines
1.0 KiB
C
41 lines
1.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#ifndef TARGET__RISCV__ASM_H
|
|
#define TARGET__RISCV__ASM_H
|
|
|
|
#include "riscv.h"
|
|
|
|
/*** Version-independent functions that we don't want in the main address space. ***/
|
|
|
|
static uint32_t load(const struct target *target, unsigned int rd,
|
|
unsigned int base, uint16_t offset) __attribute__ ((unused));
|
|
static uint32_t load(const struct target *target, unsigned int rd,
|
|
unsigned int base, uint16_t offset)
|
|
{
|
|
switch (riscv_xlen(target)) {
|
|
case 32:
|
|
return lw(rd, base, offset);
|
|
case 64:
|
|
return ld(rd, base, offset);
|
|
}
|
|
assert(0);
|
|
return 0; /* Silence -Werror=return-type */
|
|
}
|
|
|
|
static uint32_t store(const struct target *target, unsigned int src,
|
|
unsigned int base, uint16_t offset) __attribute__ ((unused));
|
|
static uint32_t store(const struct target *target, unsigned int src,
|
|
unsigned int base, uint16_t offset)
|
|
{
|
|
switch (riscv_xlen(target)) {
|
|
case 32:
|
|
return sw(src, base, offset);
|
|
case 64:
|
|
return sd(src, base, offset);
|
|
}
|
|
assert(0);
|
|
return 0; /* Silence -Werror=return-type */
|
|
}
|
|
|
|
#endif
|