39 lines
1015 B
C
39 lines
1015 B
C
#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
|