Revision dad081ee
b/linux-user/main.c | ||
---|---|---|
3054 | 3054 |
for(i = 0; i < 28; i++) { |
3055 | 3055 |
env->ir[i] = ((abi_ulong *)regs)[i]; |
3056 | 3056 |
} |
3057 |
env->ipr[IPR_USP] = regs->usp; |
|
3058 |
env->ir[30] = regs->usp; |
|
3057 |
env->ir[IR_SP] = regs->usp; |
|
3059 | 3058 |
env->pc = regs->pc; |
3060 |
env->unique = regs->unique; |
|
3061 | 3059 |
} |
3062 | 3060 |
#elif defined(TARGET_CRIS) |
3063 | 3061 |
{ |
b/target-alpha/cpu.h | ||
---|---|---|
193 | 193 |
/* Internal processor registers */ |
194 | 194 |
/* XXX: TOFIX: most of those registers are implementation dependant */ |
195 | 195 |
enum { |
196 |
#if defined(CONFIG_USER_ONLY) |
|
197 |
IPR_EXC_ADDR, |
|
198 |
IPR_EXC_SUM, |
|
199 |
IPR_EXC_MASK, |
|
200 |
#else |
|
196 | 201 |
/* Ebox IPRs */ |
197 | 202 |
IPR_CC = 0xC0, /* 21264 */ |
198 | 203 |
IPR_CC_CTL = 0xC1, /* 21264 */ |
... | ... | |
306 | 311 |
IPR_VPTB, |
307 | 312 |
IPR_WHAMI, |
308 | 313 |
IPR_ALT_MODE, |
314 |
#endif |
|
309 | 315 |
IPR_LAST, |
310 | 316 |
}; |
311 | 317 |
|
b/target-alpha/translate.c | ||
---|---|---|
2721 | 2721 |
CPUAlphaState * cpu_alpha_init (const char *cpu_model) |
2722 | 2722 |
{ |
2723 | 2723 |
CPUAlphaState *env; |
2724 |
uint64_t hwpcb; |
|
2725 | 2724 |
int implver, amask, i, max; |
2726 | 2725 |
|
2727 | 2726 |
env = qemu_mallocz(sizeof(CPUAlphaState)); |
... | ... | |
2752 | 2751 |
| FPCR_UNFD | FPCR_INED | FPCR_DNOD)); |
2753 | 2752 |
#endif |
2754 | 2753 |
pal_init(env); |
2754 |
|
|
2755 | 2755 |
/* Initialize IPR */ |
2756 |
hwpcb = env->ipr[IPR_PCBB]; |
|
2757 |
env->ipr[IPR_ASN] = 0; |
|
2758 |
env->ipr[IPR_ASTEN] = 0; |
|
2759 |
env->ipr[IPR_ASTSR] = 0; |
|
2760 |
env->ipr[IPR_DATFX] = 0; |
|
2761 |
/* XXX: fix this */ |
|
2762 |
// env->ipr[IPR_ESP] = ldq_raw(hwpcb + 8); |
|
2763 |
// env->ipr[IPR_KSP] = ldq_raw(hwpcb + 0); |
|
2764 |
// env->ipr[IPR_SSP] = ldq_raw(hwpcb + 16); |
|
2765 |
// env->ipr[IPR_USP] = ldq_raw(hwpcb + 24); |
|
2766 |
env->ipr[IPR_FEN] = 0; |
|
2767 |
env->ipr[IPR_IPL] = 31; |
|
2768 |
env->ipr[IPR_MCES] = 0; |
|
2769 |
env->ipr[IPR_PERFMON] = 0; /* Implementation specific */ |
|
2770 |
// env->ipr[IPR_PTBR] = ldq_raw(hwpcb + 32); |
|
2771 |
env->ipr[IPR_SISR] = 0; |
|
2772 |
env->ipr[IPR_VIRBND] = -1ULL; |
|
2756 |
#if defined (CONFIG_USER_ONLY) |
|
2757 |
env->ipr[IPR_EXC_ADDR] = 0; |
|
2758 |
env->ipr[IPR_EXC_SUM] = 0; |
|
2759 |
env->ipr[IPR_EXC_MASK] = 0; |
|
2760 |
#else |
|
2761 |
{ |
|
2762 |
uint64_t hwpcb; |
|
2763 |
hwpcb = env->ipr[IPR_PCBB]; |
|
2764 |
env->ipr[IPR_ASN] = 0; |
|
2765 |
env->ipr[IPR_ASTEN] = 0; |
|
2766 |
env->ipr[IPR_ASTSR] = 0; |
|
2767 |
env->ipr[IPR_DATFX] = 0; |
|
2768 |
/* XXX: fix this */ |
|
2769 |
// env->ipr[IPR_ESP] = ldq_raw(hwpcb + 8); |
|
2770 |
// env->ipr[IPR_KSP] = ldq_raw(hwpcb + 0); |
|
2771 |
// env->ipr[IPR_SSP] = ldq_raw(hwpcb + 16); |
|
2772 |
// env->ipr[IPR_USP] = ldq_raw(hwpcb + 24); |
|
2773 |
env->ipr[IPR_FEN] = 0; |
|
2774 |
env->ipr[IPR_IPL] = 31; |
|
2775 |
env->ipr[IPR_MCES] = 0; |
|
2776 |
env->ipr[IPR_PERFMON] = 0; /* Implementation specific */ |
|
2777 |
// env->ipr[IPR_PTBR] = ldq_raw(hwpcb + 32); |
|
2778 |
env->ipr[IPR_SISR] = 0; |
|
2779 |
env->ipr[IPR_VIRBND] = -1ULL; |
|
2780 |
} |
|
2781 |
#endif |
|
2773 | 2782 |
|
2774 | 2783 |
qemu_init_vcpu(env); |
2775 | 2784 |
return env; |
Also available in: Unified diff