Revision b689bc57 linux-user/main.c
b/linux-user/main.c | ||
---|---|---|
67 | 67 |
/***********************************************************/ |
68 | 68 |
/* CPUX86 core interface */ |
69 | 69 |
|
70 |
void cpu_x86_outb(int addr, int val) |
|
70 |
void cpu_x86_outb(CPUX86State *env, int addr, int val)
|
|
71 | 71 |
{ |
72 | 72 |
fprintf(stderr, "outb: port=0x%04x, data=%02x\n", addr, val); |
73 | 73 |
} |
74 | 74 |
|
75 |
void cpu_x86_outw(int addr, int val) |
|
75 |
void cpu_x86_outw(CPUX86State *env, int addr, int val)
|
|
76 | 76 |
{ |
77 | 77 |
fprintf(stderr, "outw: port=0x%04x, data=%04x\n", addr, val); |
78 | 78 |
} |
79 | 79 |
|
80 |
void cpu_x86_outl(int addr, int val) |
|
80 |
void cpu_x86_outl(CPUX86State *env, int addr, int val)
|
|
81 | 81 |
{ |
82 | 82 |
fprintf(stderr, "outl: port=0x%04x, data=%08x\n", addr, val); |
83 | 83 |
} |
84 | 84 |
|
85 |
int cpu_x86_inb(int addr) |
|
85 |
int cpu_x86_inb(CPUX86State *env, int addr)
|
|
86 | 86 |
{ |
87 | 87 |
fprintf(stderr, "inb: port=0x%04x\n", addr); |
88 | 88 |
return 0; |
89 | 89 |
} |
90 | 90 |
|
91 |
int cpu_x86_inw(int addr) |
|
91 |
int cpu_x86_inw(CPUX86State *env, int addr)
|
|
92 | 92 |
{ |
93 | 93 |
fprintf(stderr, "inw: port=0x%04x\n", addr); |
94 | 94 |
return 0; |
95 | 95 |
} |
96 | 96 |
|
97 |
int cpu_x86_inl(int addr) |
|
97 |
int cpu_x86_inl(CPUX86State *env, int addr)
|
|
98 | 98 |
{ |
99 | 99 |
fprintf(stderr, "inl: port=0x%04x\n", addr); |
100 | 100 |
return 0; |
... | ... | |
303 | 303 |
/* XXX: more precise info */ |
304 | 304 |
info.si_signo = SIGSEGV; |
305 | 305 |
info.si_errno = 0; |
306 |
info.si_code = 0;
|
|
306 |
info.si_code = TARGET_SI_KERNEL;
|
|
307 | 307 |
info._sifields._sigfault._addr = 0; |
308 | 308 |
queue_signal(info.si_signo, &info); |
309 | 309 |
} |
310 | 310 |
} |
311 | 311 |
break; |
312 |
case EXCP0E_PAGE: |
|
313 |
info.si_signo = SIGSEGV; |
|
314 |
info.si_errno = 0; |
|
315 |
if (!(env->error_code & 1)) |
|
316 |
info.si_code = TARGET_SEGV_MAPERR; |
|
317 |
else |
|
318 |
info.si_code = TARGET_SEGV_ACCERR; |
|
319 |
info._sifields._sigfault._addr = env->cr2; |
|
320 |
queue_signal(info.si_signo, &info); |
|
321 |
break; |
|
312 | 322 |
case EXCP00_DIVZ: |
313 | 323 |
if (env->eflags & VM_MASK) { |
314 | 324 |
do_int(env, trapnr); |
... | ... | |
328 | 338 |
} else { |
329 | 339 |
info.si_signo = SIGSEGV; |
330 | 340 |
info.si_errno = 0; |
331 |
info.si_code = 0;
|
|
341 |
info.si_code = TARGET_SI_KERNEL;
|
|
332 | 342 |
info._sifields._sigfault._addr = 0; |
333 | 343 |
queue_signal(info.si_signo, &info); |
334 | 344 |
} |
Also available in: Unified diff