58 case 0x00: snprintf(buf, buflen,
"PAL_halt");
break;
59 case 0x01: snprintf(buf, buflen,
"PAL_cflush");
break;
60 case 0x02: snprintf(buf, buflen,
"PAL_draina");
break;
61 case 0x09: snprintf(buf, buflen,
"PAL_cserve");
break;
62 case 0x0a: snprintf(buf, buflen,
"PAL_swppal");
break;
63 case 0x0d: snprintf(buf, buflen,
"PAL_ipir");
break;
64 case 0x10: snprintf(buf, buflen,
"PAL_OSF1_rdmces");
break;
65 case 0x11: snprintf(buf, buflen,
"PAL_OSF1_wrmces");
break;
66 case 0x2b: snprintf(buf, buflen,
"PAL_OSF1_wrfen");
break;
67 case 0x2d: snprintf(buf, buflen,
"PAL_OSF1_wrvptptr");
break;
68 case 0x30: snprintf(buf, buflen,
"PAL_OSF1_swpctx");
break;
69 case 0x31: snprintf(buf, buflen,
"PAL_OSF1_wrval");
break;
70 case 0x32: snprintf(buf, buflen,
"PAL_OSF1_rdval");
break;
71 case 0x33: snprintf(buf, buflen,
"PAL_OSF1_tbi");
break;
72 case 0x34: snprintf(buf, buflen,
"PAL_OSF1_wrent");
break;
73 case 0x35: snprintf(buf, buflen,
"PAL_OSF1_swpipl");
break;
74 case 0x36: snprintf(buf, buflen,
"PAL_rdps");
break;
75 case 0x37: snprintf(buf, buflen,
"PAL_OSF1_wrkgp");
break;
76 case 0x38: snprintf(buf, buflen,
"PAL_OSF1_wrusp");
break;
77 case 0x39: snprintf(buf, buflen,
"PAL_OSF1_wrperfmon");
break;
78 case 0x3a: snprintf(buf, buflen,
"PAL_OSF1_rdusp");
break;
79 case 0x3c: snprintf(buf, buflen,
"PAL_whami");
break;
80 case 0x3d: snprintf(buf, buflen,
"PAL_OSF1_retsys");
break;
81 case 0x3e: snprintf(buf, buflen,
"PAL_wtint");
break;
82 case 0x3f: snprintf(buf, buflen,
"PAL_OSF1_rti");
break;
83 case 0x80: snprintf(buf, buflen,
"PAL_bpt");
break;
84 case 0x81: snprintf(buf, buflen,
"PAL_bugchk");
break;
85 case 0x83: snprintf(buf, buflen,
"PAL_OSF1_callsys");
break;
86 case 0x86: snprintf(buf, buflen,
"PAL_imb");
break;
87 case 0x92: snprintf(buf, buflen,
"PAL_OSF1_urti");
break;
88 case 0x9e: snprintf(buf, buflen,
"PAL_rdunique");
break;
89 case 0x9f: snprintf(buf, buflen,
"PAL_wrunique");
break;
90 case 0xaa: snprintf(buf, buflen,
"PAL_gentrap");
break;
91 case 0xae: snprintf(buf, buflen,
"PAL_clrfen");
break;
92 case 0x3fffffe: snprintf(buf, buflen,
"GXemul_PROM");
break;
93 default:snprintf(buf, buflen,
"UNKNOWN 0x%" PRIx32, palcode);
112 for (addr = a2; addr < a2 + a3; addr ++) {
136 default:
fatal(
"[ Alpha PALcode: GXemul PROM getenv %i: TODO " 147 default:
fatal(
"[ Alpha PALcode: GXemul PROM call, a0=0x%" PRIx64
" ]\n",
184 palcode == 0x80 || palcode == 0x81 || palcode == 0x83 ||
185 palcode == 0xae || palcode == 0xaa || palcode == 0x86 ||
186 palcode == 0x9e || palcode == 0x92 || palcode == 0x9f)) {
188 fatal(
"[ Privileged Alpha PALcode called from user mode: TODO ]");
195 TODO: Uncomment more again, as
I progress with the emulation...
196 Make sure they are correct, as documented in the Manual.
266 uint64_t new_unique =
270 uint64_t new_decrsv0 =
272 uint64_t new_decrsv1 =
322 fatal(
"[ Alpha PALcode: PAL_OSF1_wrent: attempt to " 323 "write to non-implemented selector %i ]\n",
359 fatal(
"[ Alpha PALcode: syscall, but no syscall handler ]\n");
368 fatal(
"[ Alpha: KENTRY not set! Halting. ]");
372 fatal(
"[ Alpha PALcode: Fixup: TODO ]\n");
381 default:
fatal(
"[ Alpha PALcode 0x%x unimplemented! ]\n", palcode);
#define PROM_E_BOOTED_DEV
void fatal(const char *fmt,...)
int store_32bit_word(struct cpu *cpu, uint64_t addr, uint64_t data32)
#define PROM_E_BOOTED_OSFLAGS
uint64_t load_64bit_word(struct cpu *cpu, uint64_t addr)
void console_putchar(int handle, int ch)
void alpha_prom_call(struct cpu *cpu)
void alpha_palcode(struct cpu *cpu, uint32_t palcode)
int store_64bit_word(struct cpu *cpu, uint64_t addr, uint64_t data64)
char * boot_string_argument
char * boot_kernel_filename
#define PROM_E_BOOTED_FILE
void alpha_palcode_name(uint32_t palcode, char *buf, size_t buflen)
int(* memory_rw)(struct cpu *cpu, struct memory *mem, uint64_t vaddr, unsigned char *data, size_t len, int writeflag, int cache_flags)
void COMBINE() strlen(struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
uint32_t load_32bit_word(struct cpu *cpu, uint64_t addr)
void store_buf(struct cpu *cpu, uint64_t addr, const char *s, size_t len)
uint64_t kentry[N_ALPHA_KENTRY]
#define ALPHA_PSL_USERMODE
#define ALPHA_PSL_IPL_MASK
void(* invalidate_translation_caches)(struct cpu *, uint64_t paddr, int flags)