Files
mckernel/executer/user/arch/arm64/arch-eclair.c
Takayuki Okamoto 9989f41fd3 add arm64 support
- add arm64 dependent codes with GICv3 and SVE support
- fix bugs based on architecture separation requests
2017-09-05 15:06:27 +09:00

52 lines
1.1 KiB
C

/* arch-eclair.c COPYRIGHT FUJITSU LIMITED 2016 */
#include <stdio.h>
#include <eclair.h>
#include <arch-eclair.h>
int print_kregs(char *rbp, size_t rbp_size, const struct arch_kregs *kregs)
{
int i, ret, total = 0;
const unsigned long *regs[] = {&kregs->x19, &kregs->x20, &kregs->x21,
&kregs->x22, &kregs->x23, &kregs->x24,
&kregs->x25, &kregs->x26, &kregs->x27,
&kregs->x28};
for (i = 0; i < 18; i++) /* x0-x18 */{
ret = snprintf(rbp, rbp_size, "xxxxxxxxxxxxxxxx");
if (ret < 0) {
return ret;
}
rbp += ret;
total += ret;
rbp_size -= ret;
}
for (i = 0; i < sizeof(regs)/sizeof(regs[0]); i++) { /* x19-x28 */
ret = print_bin(rbp, rbp_size, (void *)regs[i], sizeof(*regs[0]));
if (ret < 0) {
return ret;
}
rbp += ret;
total += ret;
rbp_size -= ret;
}
for (i = 0; i < 2; i++) { /* x29-x30 */
ret = snprintf(rbp, rbp_size, "xxxxxxxxxxxxxxxx");
if (ret < 0) {
return ret;
}
rbp += ret;
total += ret;
rbp_size -= ret;
}
ret += print_bin(rbp, rbp_size, (void *)&kregs->sp, sizeof(kregs->sp));
if (ret < 0) {
return ret;
}
total += ret;
return total;
}