26.05.2010

parent 362b9d4a
......@@ -554,8 +554,11 @@ static void led_vsync (void)
v = 255;
else if (led_cycles_off && !led_cycles_on)
v = 0;
else
else if (led_cycles_off)
v = led_cycles_on * 255 / led_cycles_off;
else
v = 255;
if (v < 0)
v = 0;
if (v > 255)
......@@ -606,12 +609,13 @@ static void bfe001_change (void)
//activate_debugger ();
map_overlay (0);
}
}
#ifdef CD32
} else if (currprefs.cs_cd32cd && (v & 1) != oldcd32mute) {
if (currprefs.cs_cd32cd && (v & 1) != oldcd32mute) {
oldcd32mute = v & 1;
akiko_mute (oldcd32mute ? 0 : 1);
#endif
}
#endif
}
static uae_u8 ReadCIAA (unsigned int addr)
......@@ -1207,6 +1211,10 @@ void CIA_reset (void)
#endif
if (savestate_state) {
bfe001_change ();
if (!currprefs.cs_ciaoverlay) {
map_overlay (1);
oldovl = false;
}
/* select drives */
DISK_select (ciabprb);
}
......
......@@ -134,8 +134,7 @@ STATIC_INLINE int comp_fp_get (uae_u32 opcode, uae_u16 extra, int treg)
}
case 2: /* (d16,PC) */
{
uae_u32 address=start_pc+((uae_char*)comp_pc_p-(uae_char*)start_pc_p)+
m68k_pc_offset;
uae_u32 address=start_pc+((uae_char*)comp_pc_p-(uae_char*)start_pc_p)+m68k_pc_offset;
uae_s32 PC16off =(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2);
mov_l_ri(S1,address+PC16off);
break;
......@@ -179,8 +178,7 @@ STATIC_INLINE int comp_fp_get (uae_u32 opcode, uae_u16 extra, int treg)
}
case 5:
{
uae_u32 longarray[] = {comp_get_ilong(m68k_pc_offset-4),
comp_get_ilong(m68k_pc_offset-8)};
uae_u32 longarray[] = {comp_get_ilong(m68k_pc_offset-4), comp_get_ilong(m68k_pc_offset-8)};
float si = (float)*(double *)longarray;
if (*(double *)longarray == (double)si) {
......@@ -369,6 +367,7 @@ STATIC_INLINE int comp_fp_put (uae_u32 opcode, uae_u16 extra)
return -1;
}
}
switch (size) {
case 0: /* Long */
fmovi_mrb((uae_u32)temp_fp,sreg, clamp_bounds.l);
......@@ -470,7 +469,7 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra)
write_log ("JIT: fscc_opp at %08lx\n", M68K_GETPC);
#endif
if (extra&0x20) { /* only cc from 00 to 1f are defined */
if (extra & 0x20) { /* only cc from 00 to 1f are defined */
FAIL(1);
return;
}
......@@ -480,33 +479,67 @@ void comp_fscc_opp (uae_u32 opcode, uae_u16 extra)
}
fflags_into_flags(S2);
reg=(opcode&7);
reg = (opcode & 7);
mov_l_ri(S1,255);
mov_l_ri(S4,0);
switch(extra&0x0f) { /* according to fpp.c, the 0x10 bit is ignored */
switch (extra & 0x0f) { /* according to fpp.c, the 0x10 bit is ignored */
case 0: break; /* set never */
case 1: mov_l_rr(S2,S4);
case 1:
mov_l_rr(S2,S4);
cmov_l_rr(S4,S1,4);
cmov_l_rr(S4,S2,10);
break;
case 2:
cmov_l_rr(S4,S1,7);
break;
case 3:
cmov_l_rr(S4,S1,3);
break;
case 4:
mov_l_rr(S2,S4);
cmov_l_rr(S4,S1,2);
cmov_l_rr(S4,S2,10);
break;
case 5:
mov_l_rr(S2,S4);
cmov_l_rr(S4,S1,6);
cmov_l_rr(S4,S2,10);
break;
case 6:
cmov_l_rr(S4,S1,5);
break;
case 7:
cmov_l_rr(S4,S1,11);
break;
case 8:
cmov_l_rr(S4,S1,10);
break;
case 9:
cmov_l_rr(S4,S1,4);
break;
case 10:
cmov_l_rr(S4,S1,10);
cmov_l_rr(S4,S1,7);
break;
case 11:
cmov_l_rr(S4,S1,4);
cmov_l_rr(S4,S2,10); break;
case 2: cmov_l_rr(S4,S1,7); break;
case 3: cmov_l_rr(S4,S1,3); break;
case 4: mov_l_rr(S2,S4);
cmov_l_rr(S4,S1,3);
break;
case 12:
cmov_l_rr(S4,S1,2);
cmov_l_rr(S4,S2,10); break;
case 5: mov_l_rr(S2,S4);
break;
case 13:
cmov_l_rr(S4,S1,6);
cmov_l_rr(S4,S2,10); break;
case 6: cmov_l_rr(S4,S1,5); break;
case 7: cmov_l_rr(S4,S1,11); break;
case 8: cmov_l_rr(S4,S1,10); break;
case 9: cmov_l_rr(S4,S1,4); break;
case 10: cmov_l_rr(S4,S1,10); cmov_l_rr(S4,S1,7); break;
case 11: cmov_l_rr(S4,S1,4); cmov_l_rr(S4,S1,3); break;
case 12: cmov_l_rr(S4,S1,2); break;
case 13: cmov_l_rr(S4,S1,6); break;
case 14: cmov_l_rr(S4,S1,5); cmov_l_rr(S4,S1,10); break;
case 15: mov_l_rr(S4,S1); break;
break;
case 14:
cmov_l_rr(S4,S1,5);
cmov_l_rr(S4,S1,10);
break;
case 15:
mov_l_rr(S4,S1);
break;
}
if (!(opcode & 0x38))
......@@ -543,18 +576,16 @@ void comp_fbcc_opp (uae_u32 opcode)
return;
}
if (opcode&0x20) { /* only cc from 00 to 1f are defined */
if (opcode & 0x20) { /* only cc from 00 to 1f are defined */
FAIL(1);
return;
}
if (!(opcode&0x40)) {
off=(uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2);
}
else {
off=comp_get_ilong((m68k_pc_offset+=4)-4);
if (!(opcode & 0x40)) {
off = (uae_s32)(uae_s16)comp_get_iword((m68k_pc_offset+=2)-2);
} else {
off = comp_get_ilong((m68k_pc_offset+=4)-4);
}
mov_l_ri(S1,(uae_u32)
(comp_pc_p+off-(m68k_pc_offset-start_68k_offset)));
mov_l_ri(S1,(uae_u32)(comp_pc_p+off-(m68k_pc_offset-start_68k_offset)));
mov_l_ri(PC_P,(uae_u32)comp_pc_p);
/* Now they are both constant. Might as well fold in m68k_pc_offset */
......@@ -565,9 +596,9 @@ void comp_fbcc_opp (uae_u32 opcode)
/* according to fpp.c, the 0x10 bit is ignored
(it handles exception handling, which we don't
do, anyway ;-) */
cc=opcode&0x0f;
v1=get_const(PC_P);
v2=get_const(S1);
cc = opcode & 0x0f;
v1 = get_const(PC_P);
v2 = get_const(S1);
fflags_into_flags(S2);
// mov_l_mi((uae_u32)&foink3,cc);
......@@ -576,7 +607,8 @@ void comp_fbcc_opp (uae_u32 opcode)
case 1:
mov_l_rr(S2,PC_P);
cmov_l_rr(PC_P,S1,4);
cmov_l_rr(PC_P,S2,10); break;
cmov_l_rr(PC_P,S2,10);
break;
case 2: register_branch(v1,v2,7); break;
case 3: register_branch(v1,v2,3); break;
case 4:
......@@ -731,8 +763,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
if (extra & 0x0400) { /* FPIAR */
mov_l_mr((uae_u32)&regs.fpiar,opcode & 15); return;
}
}
else if ((opcode & 0x3f) == 0x3c) {
} else if ((opcode & 0x3f) == 0x3c) {
if (extra & 0x1000) { /* FPCR */
uae_u32 val=comp_get_ilong((m68k_pc_offset+=4)-4);
mov_l_mi((uae_u32)&regs.fpcr,val);
......@@ -785,10 +816,11 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
case 1:
case 3:
default:
FAIL(1); return;
FAIL(1);
return;
}
ad=comp_fp_adr (opcode);
if (ad<0) {
ad = comp_fp_adr (opcode);
if (ad < 0) {
m68k_setpc (m68k_getpc () - 4);
op_illg (opcode);
return;
......@@ -822,8 +854,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
}
list <<= 1;
}
}
else { /* Postincrement */
} else { /* Postincrement */
for (reg = 0; reg <= 7; reg++) {
if (list & 0x80) {
fmov_ext_mr((uintptr)temp_fp,reg);
......@@ -855,10 +886,11 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
case 1:
case 3:
default:
FAIL(1); return;
FAIL(1);
return;
}
ad=comp_fp_adr (opcode);
if (ad<0) {
if (ad < 0) {
m68k_setpc (m68k_getpc () - 4);
op_illg (opcode);
return;
......@@ -877,8 +909,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
abort();
}
if (incr < 0) {
// not reached
if (incr < 0) { // not reached
for (reg = 7; reg >= 0; reg--) {
if (list & 0x80) {
sub_l_ri(ad,4);
......@@ -894,8 +925,7 @@ void comp_fpp_opp (uae_u32 opcode, uae_u16 extra)
}
list <<= 1;
}
}
else {
} else {
for (reg = 0; reg <= 7; reg++) {
if (list & 0x80) {
readword(ad,S2,S3);
......
......@@ -687,10 +687,10 @@ LOWFUNC(NONE,READ,3,raw_mov_l_rrm_indexed,(W4 d, R4 baser, R4 index))
emit_byte(8*index+baser);
emit_byte(0);
return;
}
}
emit_byte(0x04+8*d);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,READ,3,raw_mov_l_rrm_indexed,(W4 d, R4 baser, R4 index))
LOWFUNC(NONE,READ,3,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
......@@ -702,10 +702,10 @@ LOWFUNC(NONE,READ,3,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
emit_byte(8*index+baser);
emit_byte(0);
return;
}
}
emit_byte(0x04+8*d);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,READ,3,raw_mov_w_rrm_indexed,(W2 d, R4 baser, R4 index))
LOWFUNC(NONE,READ,3,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
......@@ -716,10 +716,10 @@ LOWFUNC(NONE,READ,3,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
emit_byte(8*index+baser);
emit_byte(0);
return;
}
}
emit_byte(0x04+8*d);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,READ,3,raw_mov_b_rrm_indexed,(W1 d, R4 baser, R4 index))
LOWFUNC(NONE,WRITE,3,raw_mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
......@@ -733,7 +733,7 @@ LOWFUNC(NONE,WRITE,3,raw_mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
}
emit_byte(0x04+8*s);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,WRITE,3,raw_mov_l_mrr_indexed,(R4 baser, R4 index, R4 s))
LOWFUNC(NONE,WRITE,3,raw_mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
......@@ -748,7 +748,7 @@ LOWFUNC(NONE,WRITE,3,raw_mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
}
emit_byte(0x04+8*s);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,WRITE,3,raw_mov_w_mrr_indexed,(R4 baser, R4 index, R2 s))
LOWFUNC(NONE,WRITE,3,raw_mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
......@@ -762,7 +762,7 @@ LOWFUNC(NONE,WRITE,3,raw_mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
}
emit_byte(0x04+8*s);
emit_byte(8*index+baser);
}
}
LENDFUNC(NONE,WRITE,3,raw_mov_b_mrr_indexed,(R4 baser, R4 index, R1 s))
LOWFUNC(NONE,READ,3,raw_mov_l_rm_indexed,(W4 d, IMM base, R4 index))
......@@ -789,7 +789,7 @@ LOWFUNC(NONE,READ,4,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM cond))
emit_byte(0x04+8*d);
emit_byte(0x85+8*index);
emit_long(base);
}
}
LENDFUNC(NONE,READ,4,raw_cmov_l_rm_indexed,(W4 d, IMM base, R4 index, IMM cond))
LOWFUNC(NONE,READ,3,raw_cmov_l_rm,(W4 d, IMM mem, IMM cond))
......@@ -1460,7 +1460,7 @@ LOWFUNC(WRITE,READ,0,raw_popfl,(void))
}
LENDFUNC(WRITE,READ,0,raw_popfl,(void))
/*************************************************************************
/*************************************************************************
* Unoptimizable stuff --- jump *
*************************************************************************/
......@@ -1482,7 +1482,7 @@ STATIC_INLINE void raw_jmp_m_indexed(uae_u32 base, uae_u32 r, uae_u32 m)
{
int sib;
switch(m) {
switch (m) {
case 1: sib = 0x05; break;
case 2: sib = 0x45; break;
case 4: sib = 0x85; break;
......@@ -1716,15 +1716,15 @@ int EvalException ( LPEXCEPTION_POINTERS blah, int n_except )
if (n_except == STATUS_GUARD_PAGE_VIOLATION)
return mman_guard_exception (blah);
if( n_except != STATUS_ACCESS_VIOLATION || !canbang)
if (n_except != STATUS_ACCESS_VIOLATION || !canbang || currprefs.cachesize == 0)
return EXCEPTION_CONTINUE_SEARCH;
pExceptRecord = blah->ExceptionRecord;
pContext = blah->ContextRecord;
if( pContext )
if (pContext)
i = (uae_u8 *)ctxPC;
if( pExceptRecord )
if (pExceptRecord)
addr = (uae_u32)(pExceptRecord->ExceptionInformation[1]);
#ifdef JIT_DEBUG
write_log ("JIT: fault address is 0x%x at 0x%x\n",addr,i);
......@@ -1816,14 +1816,14 @@ int EvalException ( LPEXCEPTION_POINTERS blah, int n_except )
case 1: pr=&(pContext->Rcx); break;
case 2: pr=&(pContext->Rdx); break;
case 3: pr=&(pContext->Rbx); break;
case 4: pr=(size>1)?NULL:(((uae_u8*)&(pContext->Rax))+1); break;
case 5: pr=(size>1)?
case 4: pr=(size>1) ? NULL:(((uae_u8*)&(pContext->Rax))+1); break;
case 5: pr=(size>1) ?
(void*)(&(pContext->Rbp)):
(void*)(((uae_u8*)&(pContext->Rcx))+1); break;
case 6: pr=(size>1)?
case 6: pr=(size>1) ?
(void*)(&(pContext->Rsi)):
(void*)(((uae_u8*)&(pContext->Rdx))+1); break;
case 7: pr=(size>1)?
case 7: pr=(size>1) ?
(void*)(&(pContext->Rdi)):
(void*)(((uae_u8*)&(pContext->Rbx))+1); break;
#else
......@@ -1831,14 +1831,14 @@ int EvalException ( LPEXCEPTION_POINTERS blah, int n_except )
case 1: pr=&(pContext->Ecx); break;
case 2: pr=&(pContext->Edx); break;
case 3: pr=&(pContext->Ebx); break;
case 4: pr=(size>1)?NULL:(((uae_u8*)&(pContext->Eax))+1); break;
case 5: pr=(size>1)?
case 4: pr=(size>1) ? NULL:(((uae_u8*)&(pContext->Eax))+1); break;
case 5: pr=(size>1) ?
(void*)(&(pContext->Ebp)):
(void*)(((uae_u8*)&(pContext->Ecx))+1); break;
case 6: pr=(size>1)?
case 6: pr=(size>1) ?
(void*)(&(pContext->Esi)):
(void*)(((uae_u8*)&(pContext->Edx))+1); break;
case 7: pr=(size>1)?
case 7: pr=(size>1) ?
(void*)(&(pContext->Edi)):
(void*)(((uae_u8*)&(pContext->Ebx))+1); break;
#endif
......@@ -1899,7 +1899,6 @@ int EvalException ( LPEXCEPTION_POINTERS blah, int n_except )
emit_byte(0xe9);
emit_long((uae_u32)veccode-(uae_u32)target-4);
#ifdef JIT_DEBUG
write_log ("JIT: Create jump to %p\n",veccode);
write_log ("JIT: Handled one access!\n");
#endif
......@@ -1979,7 +1978,7 @@ int EvalException ( LPEXCEPTION_POINTERS blah, int n_except )
}
write_log ("JIT: Can't handle access %08X!\n", i);
#if 0
if( i )
if (i)
{
int j;
......@@ -2025,9 +2024,9 @@ static void vec(int x, struct sigcontext sc)
uae_u32 addr=sc.cr2;
#endif
int r=-1;
int size = 4;
int dir = -1;
int len = 0;
int size=4;
int dir=-1;
int len=0;
int j;
write_log ("JIT: fault address is %08x at %08x\n",addr,i);
......@@ -2039,49 +2038,49 @@ static void vec(int x, struct sigcontext sc)
/*
* Decode access opcode
*/
if (canbang && i >= compiled_code && i <= current_compile_p) {
if (*i == 0x66) {
if (canbang && i>=compiled_code && i<=current_compile_p) {
if (*i==0x66) {
i++;
size = 2;
size=2;
len++;
}
switch (i[0]) {
switch(i[0]) {
case 0x8a:
if ((i[1] & 0xc0) == 0x80) {
if ((i[1]&0xc0)==0x80) {
r=(i[1]>>3)&7;
dir = SIG_READ;
size = 1;
len += 6;
dir=SIG_READ;
size=1;
len+=6;
break;
}
break;
case 0x88:
if ((i[1] & 0xc0) == 0x80) {
if ((i[1]&0xc0)==0x80) {
r=(i[1]>>3)&7;
dir = SIG_WRITE;
size = 1;
len += 6;
dir=SIG_WRITE;
size=1;
len+=6;
break;
}
break;
case 0x8b:
switch (i[1] & 0xc0) {
switch(i[1]&0xc0) {
case 0x80:
r=(i[1]>>3)&7;
dir = SIG_READ;
len += 6;
dir=SIG_READ;
len+=6;
break;
case 0x40:
r=(i[1]>>3)&7;
dir = SIG_READ;
len += 3;
dir=SIG_READ;
len+=3;
break;
case 0x00:
r=(i[1]>>3)&7;
dir = SIG_READ;
len += 2;
dir=SIG_READ;
len+=2;
break;
default:
break;
......@@ -2089,21 +2088,21 @@ static void vec(int x, struct sigcontext sc)
break;
case 0x89:
switch (i[1] & 0xc0) {
switch(i[1]&0xc0) {
case 0x80:
r=(i[1]>>3)&7;
dir = SIG_WRITE;
len += 6;
dir=SIG_WRITE;
len+=6;
break;
case 0x40:
r=(i[1]>>3)&7;
dir = SIG_WRITE;
len += 3;
dir=SIG_WRITE;
len+=3;
break;
case 0x00:
r=(i[1]>>3)&7;
dir = SIG_WRITE;
len += 2;
dir=SIG_WRITE;
len+=2;
break;
}
break;
......@@ -2111,7 +2110,7 @@ static void vec(int x, struct sigcontext sc)
}
if (r!=-1) {
void *pr = NULL;
void* pr=NULL;
write_log ("JIT: register was %d, direction was %d, size was %d\n",r,dir,size);
switch(r) {
......@@ -2119,42 +2118,42 @@ static void vec(int x, struct sigcontext sc)
case 1: pr=&(sc.CONTEXT_MEMBER(ecx)); break;
case 2: pr=&(sc.CONTEXT_MEMBER(edx)); break;
case 3: pr=&(sc.CONTEXT_MEMBER(ebx)); break;
case 4: pr=(size>1)?NULL:(((uae_u8*)&(sc.CONTEXT_MEMBER(eax)))+1); break;
case 5: pr=(size>1)?
case 4: pr=(size>1) ? NULL:(((uae_u8*)&(sc.CONTEXT_MEMBER(eax)))+1); break;
case 5: pr=(size>1) ?
(void*)(&(sc.CONTEXT_MEMBER(ebp))):
(void*)(((uae_u8*)&(sc.CONTEXT_MEMBER(ecx)))+1); break;
case 6: pr=(size>1)?
case 6: pr=(size>1) ?
(void*)(&(sc.CONTEXT_MEMBER(esi))):
(void*)(((uae_u8*)&(sc.CONTEXT_MEMBER(edx)))+1); break;
case 7: pr=(size>1)?
case 7: pr=(size>1) ?
(void*)(&(sc.CONTEXT_MEMBER(edi))):
(void*)(((uae_u8*)&(sc.CONTEXT_MEMBER(ebx)))+1); break;
default: abort();
}
if (pr) {
blockinfo *bi;
blockinfo* bi;
if (currprefs.comp_oldsegv) {
addr-=(uae_u8)NATMEM_OFFSET;
if ((addr >= 0x10000000 && addr < 0x40000000) ||
(addr >= 0x50000000)) {
if ((addr>=0x10000000 && addr<0x40000000) ||
(addr>=0x50000000)) {
write_log ("JIT: Suspicious address in %x SEGV handler.\n",addr);
}
if (dir == SIG_READ) {
switch (size) {
case 1: *((uae_u8*) pr) = get_byte (addr); break;
case 2: *((uae_u16*)pr) = get_word (addr); break;
case 4: *((uae_u32*)pr) = get_long (addr); break;
default: abort ();
if (dir==SIG_READ) {
switch(size) {
case 1: *((uae_u8*)pr)=get_byte (addr); break;
case 2: *((uae_u16*)pr)=get_word (addr); break;
case 4: *((uae_u32*)pr)=get_long (addr); break;
default: abort();
}
}
else { /* write */
switch (size) {
case 1: put_byte (addr, *((uae_u8*) pr)); break;
case 2: put_word (addr, *((uae_u16*)pr)); break;
case 4: put_long (addr, *((uae_u32*)pr)); break;
default: abort ();
switch(size) {
case 1: put_byte (addr,*((uae_u8*)pr)); break;
case 2: put_word (addr,*((uae_u16*)pr)); break;
case 4: put_long (addr,*((uae_u32*)pr)); break;
default: abort();
}
}
write_log ("JIT: Handled one access!\n");
......@@ -2163,73 +2162,73 @@ static void vec(int x, struct sigcontext sc)
sc.CONTEXT_MEMBER(eip)+=len;
}
else {
void *tmp = target;
void* tmp=target;
int i;
uae_u8 vecbuf[5];
addr-=(uae_u8)NATMEM_OFFSET;
if ((addr >= 0x10000000 && addr < 0x40000000) ||
(addr >= 0x50000000)) {
if ((addr>=0x10000000 && addr<0x40000000) ||
(addr>=0x50000000)) {
write_log ("JIT: Suspicious address 0x%x in SEGV handler.\n",addr);
}
target=(uae_u8*)sc.CONTEXT_MEMBER(eip);
for (i = 0; i < 5; i++)
vecbuf[i] = target[i];
emit_byte (0xe9);
emit_long ((uae_u32)veccode - (uae_u32)target - 4);
for (i=0;i<5;i++)
vecbuf[i]=target[i];
emit_byte(0xe9);
emit_long((uae_u32)veccode-(uae_u32)target-4);
write_log ("JIT: Create jump to %p\n",veccode);
write_log ("JIT: Handled one access!\n");
segvcount++;
target = veccode;
target=veccode;
if (dir == SIG_READ) {
switch (size) {
if (dir==SIG_READ) {
switch(size) {
case 1: raw_mov_b_ri(r,get_byte (addr)); break;
case 2: raw_mov_w_ri(r,get_word (addr)); break;
case 4: raw_mov_l_ri(r,get_long (addr)); break;
default: abort ();
default: abort();
}
}
else { /* write */
switch(size) {
case 1: put_byte (addr, *((uae_u8*) pr)); break;
case 2: put_word (addr, *((uae_u16*)pr)); break;
case 4: put_long (addr, *((uae_u32*)pr)); break;
default: abort ();
case 1: put_byte (addr,*((uae_u8*)pr)); break;
case 2: put_word (addr,*((uae_u16*)pr)); break;
case 4: put_long (addr,*((uae_u32*)pr)); break;
default: abort();
}
}
for (i = 0; i < 5; i++)
for (i=0;i<5;i++)
raw_mov_b_mi(sc.CONTEXT_MEMBER(eip)+i,vecbuf[i]);
raw_mov_l_mi ((uae_u32)&in_handler, 0);
emit_byte (0xe9);
raw_mov_l_mi((uae_u32)&in_handler,0);
emit_byte(0xe9);
emit_long(sc.CONTEXT_MEMBER(eip)+len-(uae_u32)target-4);
in_handler = 1;
target = tmp;
in_handler=1;
target=tmp;
}
bi = active;
bi=active;
while (bi) {
if (bi->handler &&
(uae_u8*)bi->direct_handler <= i &&
(uae_u8*)bi->nexthandler > i) {
(uae_u8*)bi->direct_handler<=i &&
(uae_u8*)bi->nexthandler>i) {
write_log ("JIT: deleted trigger (%p<%p<%p) %p\n",
bi->handler,
i,
bi->nexthandler,
bi->pc_p);
invalidate_block (bi);
raise_in_cl_list (bi);
set_special (0);
invalidate_block(bi);
raise_in_cl_list(bi);
set_special(0);
return;
}
bi = bi->next;
bi=bi->next;
}
/* Not found in the active list. Might be a rom routine that
is in the dormant list */
bi = dormant;
bi=dormant;
while (bi) {
if (bi->handler &&
(uae_u8*)bi->direct_handler<=i &&
......@@ -2239,9 +2238,9 @@ static void vec(int x, struct sigcontext sc)
i,
bi->nexthandler,
bi->pc_p);
invalidate_block (bi);
raise_in_cl_list (bi);
set_special (0);
invalidate_block(bi);
raise_in_cl_list(bi);
set_special(0);
return;
}
bi=bi->next;
......@@ -2327,7 +2326,7 @@ x86_alignments[X86_PROCESSOR_max + 1] = {
};
static void
x86_get_cpu_vendor(struct cpuinfo_x86 *c)
x86_get_cpu_vendor(struct cpuinfo_x86 *c)
{
char *v = c->x86_vendor_id;
......@@ -2415,9 +2414,9 @@ static void raw_init_cpu (void)
/* Intel-defined flags: level 0x00000001 */
c->x86_brand_id = 0;
if (c->cpuid_level >= 0x00000001) {
if ( c->cpuid_level >= 0x00000001 ) {
uae_u32 tfms, brand_id;
cpuid (0x00000001, &tfms, &brand_id, NULL, &c->x86_hwcap);
cpuid(0x00000001, &tfms, &brand_id, NULL, &c->x86_hwcap);
c->x86 = (tfms >> 8) & 15;
c->x86_model = (tfms >> 4) & 15;
c->x86_brand_id = brand_id & 0xff;
......@@ -2434,9 +2433,9 @@ static void raw_init_cpu (void)
}
/* AMD-defined flags: level 0x80000001 */
cpuid (0x80000000, &xlvl, NULL, NULL, NULL);
if ((xlvl & 0xffff0000) == 0x80000000) {
if (xlvl >= 0x80000001) {
cpuid(0x80000000, &xlvl, NULL, NULL, NULL);
if ( (xlvl & 0xffff0000) == 0x80000000 ) {
if ( xlvl >= 0x80000001 ) {
uae_u32 features;
cpuid(0x80000001, NULL, NULL, NULL, &features);
if (features & (1 << 29)) {
......@@ -2503,7 +2502,7 @@ static void raw_init_cpu (void)
{
write_log ("CPUID level=%d, Family=%d, Model=%d, Mask=%d, Vendor=%s [%d]\n",
c->cpuid_level, c->x86, c->x86_model, c->x86_mask, c->x86_vendor_id, c->x86_vendor);
}
}
}
#if 0
......
......@@ -4770,14 +4770,6 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos)
sprite_fetch2 (s, hpos, cycle, 0);
break;
}
} else {
data = cycle == 0 ? sprpos[num] : sprctl[num];
}
#if SPRITE_DEBUG > 1
if (vpos >= SPRITE_DEBUG_MINY && vpos <= SPRITE_DEBUG_MAXY) {
write_log ("%d:%d:dma:P=%06X ", vpos, hpos, s->pt);
}
#endif
//write_log ("%d:%d: %04X=%04X\n", vpos, hpos, 0x140 + cycle * 2 + num * 8, data);
if (cycle == 0) {
SPRxPOS_1 (data, num, hpos);
......@@ -4788,6 +4780,12 @@ STATIC_INLINE void do_sprites_1 (int num, int cycle, int hpos)
sprstartstop (s);
}
}
#if SPRITE_DEBUG > 1
if (vpos >= SPRITE_DEBUG_MINY && vpos <= SPRITE_DEBUG_MAXY) {
write_log (L"%d:%d:dma:P=%06X ", vpos, hpos, s->pt);
}
#endif
}
if (s->dmastate && !posctl && dma) {
uae_u16 data;
......@@ -4919,7 +4917,6 @@ static void init_hardware_frame (void)
ddflastword_total = 0;
plflastline_total = 0;
plffirstline_total = maxvpos;
plffirstline_total = maxvpos;
autoscale_bordercolors = 0;
for (i = 0; i < MAX_SPRITES; i++)
spr[i].ptxhpos = MAXHPOS;
......@@ -6359,6 +6356,8 @@ void custom_prepare_savestate (void)
}
#define RB restore_u8 ()
#define SRB (uae_s8)restore_u8 ()
#define RBB restore_u8 () != 0
#define RW restore_u16 ()
#define RL restore_u32 ()
......@@ -6760,6 +6759,105 @@ uae_u8 *save_custom_sprite(int num, int *len, uae_u8 *dstptr)
return dstbak;
}
uae_u8 *restore_custom_extra (uae_u8 *src)
{
restore_u32 ();
currprefs.cs_compatible = changed_prefs.cs_compatible = 0;
currprefs.genlock = changed_prefs.genlock = RBB;
currprefs.cs_rtc = changed_prefs.cs_rtc = RB;
currprefs.cs_rtc_adjust = changed_prefs.cs_rtc_adjust = RL;
currprefs.cs_a1000ram = changed_prefs.cs_a1000ram = RBB;
currprefs.cs_slowmemisfast = changed_prefs.cs_slowmemisfast = RBB;
currprefs.cs_a2091 = changed_prefs.cs_a2091 = RBB;
currprefs.cs_a4091 = changed_prefs.cs_a4091 = RBB;
currprefs.cs_cdtvscsi = changed_prefs.cs_cdtvscsi = RBB;
currprefs.cs_pcmcia = changed_prefs.cs_pcmcia = RBB;
currprefs.cs_ciaatod = changed_prefs.cs_ciaatod = RB;
currprefs.cs_ciaoverlay = changed_prefs.cs_ciaoverlay = RBB;
currprefs.cs_agnusbltbusybug = changed_prefs.cs_agnusbltbusybug = RBB;
currprefs.cs_denisenoehb = changed_prefs.cs_denisenoehb = RBB;
currprefs.cs_agnusrev = changed_prefs.cs_agnusrev = SRB;
currprefs.cs_deniserev = changed_prefs.cs_deniserev = SRB;
currprefs.cs_fatgaryrev = changed_prefs.cs_fatgaryrev = SRB;
currprefs.cs_ramseyrev = changed_prefs.cs_ramseyrev = SRB;
currprefs.cs_cd32c2p = changed_prefs.cs_cd32c2p = RBB;
currprefs.cs_cd32cd = changed_prefs.cs_cd32cd = RBB;
currprefs.cs_cd32nvram = changed_prefs.cs_cd32nvram = RBB;
currprefs.cs_cdtvcd = changed_prefs.cs_cdtvcd = RBB;
currprefs.cs_cdtvram = changed_prefs.cs_cdtvram = RBB;
currprefs.cs_cdtvcard = changed_prefs.cs_cdtvcard = RB;
currprefs.cs_df0idhw = changed_prefs.cs_df0idhw = RBB;
currprefs.cs_dipagnus = changed_prefs.cs_dipagnus = RBB;
currprefs.cs_ide = changed_prefs.cs_ide = RB;
currprefs.cs_mbdmac = changed_prefs.cs_mbdmac = RB;
currprefs.cs_ksmirror_a8 = changed_prefs.cs_ksmirror_a8 = RBB;
currprefs.cs_ksmirror_e0 = changed_prefs.cs_ksmirror_e0 = RBB;
currprefs.cs_resetwarning = changed_prefs.cs_resetwarning = RBB;
return src;
}
uae_u8 *save_custom_extra (int *len, uae_u8 *dstptr)
{
uae_u8 *dstbak, *dst;
if (dstptr)
dstbak = dst = dstptr;
else
dstbak = dst = xmalloc (uae_u8, 1000);
SL (0);
SB (currprefs.genlock ? 1 : 0);
SB (currprefs.cs_rtc);
SL (currprefs.cs_rtc_adjust);
SB (currprefs.cs_a1000ram ? 1 : 0);
SB (currprefs.cs_slowmemisfast ? 1 : 0);
SB (currprefs.cs_a2091 ? 1 : 0);
SB (currprefs.cs_a4091 ? 1 : 0);
SB (currprefs.cs_cdtvscsi ? 1 : 0);
SB (currprefs.cs_pcmcia ? 1 : 0);
SB (currprefs.cs_ciaatod);
SB (currprefs.cs_ciaoverlay ? 1 : 0);
SB (currprefs.cs_agnusbltbusybug ? 1 : 0);
SB (currprefs.cs_denisenoehb ? 1 : 0);
SB (currprefs.cs_agnusrev);
SB (currprefs.cs_deniserev);
SB (currprefs.cs_fatgaryrev);
SB (currprefs.cs_ramseyrev);
SB (currprefs.cs_cd32c2p);
SB (currprefs.cs_cd32cd);
SB (currprefs.cs_cd32nvram);
SB (currprefs.cs_cdtvcd ? 1 : 0);
SB (currprefs.cs_cdtvram ? 1 : 0);
SB (currprefs.cs_cdtvcard);
SB (currprefs.cs_df0idhw ? 1 : 0);
SB (currprefs.cs_dipagnus ? 1 : 0);
SB (currprefs.cs_ide);
SB (currprefs.cs_mbdmac);
SB (currprefs.cs_ksmirror_a8 ? 1 : 0);
SB (currprefs.cs_ksmirror_e0 ? 1 : 0);
SB (currprefs.cs_resetwarning ? 1 : 0);
*len = dst - dstbak;
return dstbak;
}
#endif /* SAVESTATE */
void check_prefs_changed_custom (void)
......
......@@ -1774,7 +1774,7 @@ STATIC_INLINE void do_flush_screen (int start, int stop)
unlockscr ();
if (start <= stop)
flush_screen (start, stop);
else if (currprefs.gfx_afullscreen && currprefs.gfx_avsync)
else if (currprefs.gfx_afullscreen == 1 && currprefs.gfx_avsync)
flush_screen (0, 0); /* vsync mode */
}
......@@ -2868,6 +2868,12 @@ void vsync_handle_redraw (int long_frame, int lof_changed)
#endif
if (quit_program < 0) {
if (!savestate_state) {
if (currprefs.quitstatefile[0]) {
savestate_initsave (currprefs.quitstatefile, 1, 1);
save_state (currprefs.quitstatefile, "");
}
}
quit_program = -quit_program;
set_inhibit_frame (IHF_QUIT_PROGRAM);
set_special (SPCFLAG_BRK);
......@@ -2904,7 +2910,7 @@ void vsync_handle_redraw (int long_frame, int lof_changed)
else if (currprefs.cpu_cycle_exact)
init_hardware_for_drawing_frame ();
} else {
if (currprefs.gfx_afullscreen && currprefs.gfx_avsync)
if (currprefs.gfx_afullscreen == GFX_FULLSCREEN && currprefs.gfx_avsync)
flush_screen (0, 0); /* vsync mode */
}
gui_flicker_led (-1, 0, 0);
......
......@@ -133,7 +133,8 @@ static void ersatz_init (void)
if (disk_empty (0)) {
already_failed = 1;
gui_message ("You need to have a diskfile in DF0 to use the Kickstart replacement!\n");
uae_restart (-1, NULL);
//uae_restart (-1, NULL);
uae_quit ();
return;
}
......
......@@ -308,14 +308,14 @@ int get_filesys_unitconfig (struct uae_prefs *p, int index, struct mountedinfo *
return FILESYS_HARDFILE;
}
static void stripsemicolon (char *s)
static void stripsemicolon (TCHAR *s)
{
if (!s)
return;
while (_tcslen(s) > 0 && s[_tcslen(s) - 1] == ':')
s[_tcslen(s) - 1] = 0;
}
static void stripspace (char *s)
static void stripspace (TCHAR *s)
{
int i;
if (!s)
......@@ -325,7 +325,7 @@ static void stripspace (char *s)
s[i] = '_';
}
}
static void striplength (char *s, int len)
static void striplength (TCHAR *s, int len)
{
if (!s)
return;
......@@ -333,7 +333,7 @@ static void striplength (char *s, int len)
return;
s[len] = 0;
}
static void fixcharset (char *s)
static void fixcharset (TCHAR *s)
{
char tmp[MAX_DPATH];
if (!s)
......@@ -343,7 +343,7 @@ static void fixcharset (char *s)
au_fs_copy (s, strlen (tmp) + 1, tmp);
}
char *validatevolumename (char *s)
TCHAR *validatevolumename (TCHAR *s)
{
stripsemicolon (s);
stripspace (s);
......@@ -351,7 +351,7 @@ char *validatevolumename (char *s)
striplength (s, 30);
return s;
}
char *validatedevicename (char *s)
TCHAR *validatedevicename (TCHAR *s)
{
stripsemicolon (s);
stripspace (s);
......@@ -360,7 +360,7 @@ char *validatedevicename (char *s)
return s;
}
char *filesys_createvolname (const char *volname, const char *rootdir, const char *def)
TCHAR *filesys_createvolname (const TCHAR *volname, const TCHAR *rootdir, const TCHAR *def)
{
TCHAR *nvol = NULL;
int i, archivehd;
......@@ -412,7 +412,7 @@ char *filesys_createvolname (const char *volname, const char *rootdir, const cha
return nvol;
}
static int set_filesys_volume (const char *rootdir, int *flags, int *readonly, int *emptydrive, struct zvolume **zvp)
static int set_filesys_volume (const TCHAR *rootdir, int *flags, bool *readonly, bool *emptydrive, struct zvolume **zvp)
{
*emptydrive = 0;
//FIXME: we dont support.. yet.. -mustafa
......@@ -564,7 +564,7 @@ int set_filesys_unit (int nr,
return ret;
}
int add_filesys_unit (char *devname, char *volname, const char *rootdir, bool readonly,
int add_filesys_unit (TCHAR *devname, TCHAR *volname, const TCHAR *rootdir, bool readonly,
int secspertrack, int surfaces, int reserved,
int blocksize, int bootpri, bool donotmount, bool autoboot,
TCHAR *filesysdir, int hdc, int flags)
......@@ -670,7 +670,7 @@ static void initialize_mountinfo (void)
//filesys_addexternals ();
}
int sprintf_filesys_unit (char *buffer, int num)
int sprintf_filesys_unit (TCHAR *buffer, int num)
{
UnitInfo *uip = mountinfo.ui;
......@@ -923,7 +923,7 @@ typedef uaecptr dpacket;
static int flush_cache (Unit *unit, int num);
static char *char1 (uaecptr addr)
static TCHAR *char1 (uaecptr addr)
{
static uae_char buf[1024];
static TCHAR bufx[1024];
......@@ -949,7 +949,7 @@ static TCHAR *bstr1 (uaecptr addr)
return au_fs_copy (bufx, sizeof (bufx) / sizeof (TCHAR), buf);
}
static char *bstr (Unit *unit, uaecptr addr)
static TCHAR *bstr (Unit *unit, uaecptr addr)
{
int i;
int n = get_byte (addr);
......@@ -963,7 +963,7 @@ static char *bstr (Unit *unit, uaecptr addr)
return unit->tmpbuf3;
}
static char *bstr_cut (Unit *unit, uaecptr addr)
static TCHAR *bstr_cut (Unit *unit, uaecptr addr)
{
TCHAR *p = unit->tmpbuf3;
int i, colon_seen = 0, off;
......@@ -1158,7 +1158,7 @@ void filesys_vsync (void)
}
}
}
static void filesys_delayed_change (Unit *u, int frames, const TCHAR *rootdir, const TCHAR *volume, int readonly, int flags)
static void filesys_delayed_change (Unit *u, int frames, const TCHAR *rootdir, const TCHAR *volume, bool readonly, int flags)
{
u->reinsertdelay = 50;
u->newflags = flags;
......@@ -1665,7 +1665,10 @@ static TCHAR *get_nname (Unit *unit, a_inode *base, TCHAR *rel,
TCHAR *p = 0;
*modified_rel = 0;
if (unit->volflags & MYVOLUMEINFO_ARCHIVE) {
//if (zfile_exists_archive(base->nname, rel))
// return build_nname(base->nname, rel);
return 0;
}
......@@ -1732,7 +1735,7 @@ oh_dear:
static int fill_file_attrs (Unit *u, a_inode *base, a_inode *c)
{
if (0 /*u->volflags & MYVOLUMEINFO_ARCHIVE*/) {
/* if (u->volflags & MYVOLUMEINFO_ARCHIVE) {
int isdir, flags;
TCHAR *comment;
zfile_fill_file_attrs_archive (c->nname, &isdir, &flags, &comment);
......@@ -1742,9 +1745,9 @@ static int fill_file_attrs (Unit *u, a_inode *base, a_inode *c)
c->amigaos_mode = flags;
c->comment = comment;
return 1;
} else {
} else {*/
return fsdb_fill_file_attrs (base, c);
}
//}
return 0;
}
......@@ -2483,12 +2486,12 @@ static void
write_log ("Notify:\n");
write_log ("nr_Name '%s'\n", char1 (get_long (nr + 0)));
write_log ("nr_FullName '%s'\n", name);
write_log ("nr_UserData %08.8X\n", get_long (nr + 8));
write_log ("nr_Flags %08.8X\n", flags);
write_log ("nr_UserData %08X\n", get_long (nr + 8));
write_log ("nr_Flags %08X\n", flags);
if (flags & NRF_SEND_MESSAGE) {
write_log ("Message NotifyRequest, port = %08.8X\n", get_long (nr + 16));
write_log ("Message NotifyRequest, port = %08X\n", get_long (nr + 16));
} else if (flags & NRF_SEND_SIGNAL) {
write_log ("Signal NotifyRequest, Task = %08.8X signal = %d\n", get_long (nr + 16), get_long (nr + 20));
write_log ("Signal NotifyRequest, Task = %08X signal = %d\n", get_long (nr + 16), get_long (nr + 20));
} else {
write_log ("corrupt NotifyRequest\n");
}
......@@ -3320,7 +3323,7 @@ static uae_u32 REGPARAM2 exall_helper (TrapContext *context)
for (u = units; u; u = u->next) {
for (i = 0; i < EXALLKEYS; i++) {
if (u->exalls[i].id == id && u->exalls[i].control == control) {
action_examine_all (u, get_real_address (packet));
action_examine_all (u, packet);
}
}
}
......@@ -3745,9 +3748,8 @@ static void
/* HACK HACK HACK HACK
* Try to detect a LoadSeg() */
if (k->file_pos == 0 && size >= 4) {
unsigned char buf[4];
unsigned TCHAR buf[4];
off_t currpos = fs_lseek (unit, k->fd, 0, SEEK_CUR);
//my_read (k->fd, buf, 4);
fread (buf, 1, 4, k->fd);
fs_lseek (unit, k->fd, currpos, SEEK_SET);
if (buf[0] == 0 && buf[1] == 0 && buf[2] == 3 && buf[3] == 0xF3)
......@@ -5330,10 +5332,10 @@ static uae_u32 REGPARAM2 filesys_init_storeinfo (TrapContext *context)
int ret = -1;
switch (m68k_dreg (regs, 1))
{
/* case 1:
case 1:
mountertask = m68k_areg (regs, 1);
picasso96_alloc (context);
break;*/
//picasso96_alloc (context);
break;
case 2:
ret = automountunit;
automountunit = -1;
......@@ -5507,7 +5509,7 @@ static int rdb_mount (UnitInfo *uip, int unit_no, unsigned int partnum, uaecptr
bufrdb[0xde] = 0;
bufrdb[0xdf] = 0;
if (rdb_checksum ("RDSK", bufrdb, rdblock)) {
write_log ("Windows trashed RDB detected, fixing..\n");
write_log ("Windows 95/98/ME trashed RDB detected, fixing..\n");
hdf_write (hfd, bufrdb, rdblock * hfd->blocksize, hfd->blocksize);
break;
}
......
......@@ -1921,7 +1921,7 @@ static void initide (void)
void gayle_reset (int hardreset)
{
static char bankname[100];
static TCHAR bankname[100];
initide ();
if (hardreset) {
......@@ -2018,7 +2018,7 @@ uae_u8 *restore_ide (uae_u8 *src)
{
int num, readonly, blocksize;
uae_u64 size;
char *path;
TCHAR *path;
struct ide_hdf *ide;
alloc_ide_mem (idedrive, 4);
......
......@@ -941,13 +941,13 @@ static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, cha
} else if (using_ce) {
switch (size) {
case sz_byte:
printf ("\tput_byte_ce (%sa,%s);\n", to, from);
printf ("\tput_byte_ce (%sa, %s);\n", to, from);
count_write++;
break;
case sz_word:
if (cpu_level < 2 && (mode == PC16 || mode == PC8r))
abort ();
printf ("\tput_word_ce (%sa,%s);\n", to, from);
printf ("\tput_word_ce (%sa, %s);\n", to, from);
count_write++;
break;
case sz_long:
......@@ -967,27 +967,27 @@ static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, cha
case sz_byte:
insn_n_cycles += 4;
if (flags & GF_FC)
printf ("\tdfc_put_byte (%sa,%s);\n", to, from);
printf ("\tdfc_put_byte (%sa, %s);\n", to, from);
else
printf ("\tput_byte_mmu (%sa,%s);\n", to, from);
printf ("\tput_byte_mmu (%sa, %s);\n", to, from);
break;
case sz_word:
insn_n_cycles += 4;
if (cpu_level < 2 && (mode == PC16 || mode == PC8r))
abort ();
if (flags & GF_FC)
printf ("\tdfc_put_word (%sa,%s);\n", to, from);
printf ("\tdfc_put_word (%sa, %s);\n", to, from);
else
printf ("\tput_word_mmu (%sa,%s);\n", to, from);
printf ("\tput_word_mmu (%sa, %s);\n", to, from);
break;
case sz_long:
insn_n_cycles += 8;
if (cpu_level < 2 && (mode == PC16 || mode == PC8r))
abort ();
if (flags & GF_FC)
printf ("\tdfc_put_long (%sa,%s);\n", to, from);
printf ("\tdfc_put_long (%sa, %s);\n", to, from);
else
printf ("\tput_long_mmu (%sa,%s);\n", to, from);
printf ("\tput_long_mmu (%sa, %s);\n", to, from);
break;
default:
abort ();
......@@ -996,21 +996,21 @@ static void genastore_2 (char *from, amodes mode, char *reg, wordsizes size, cha
switch (size) {
case sz_byte:
insn_n_cycles += 4;
printf ("\tput_byte (%sa,%s);\n", to, from);
printf ("\tput_byte (%sa, %s);\n", to, from);
count_write++;
break;
case sz_word:
insn_n_cycles += 4;
if (cpu_level < 2 && (mode == PC16 || mode == PC8r))
abort ();
printf ("\tput_word (%sa,%s);\n", to, from);
printf ("\tput_word (%sa, %s);\n", to, from);
count_write++;
break;
case sz_long:
insn_n_cycles += 8;
if (cpu_level < 2 && (mode == PC16 || mode == PC8r))
abort ();
printf ("\tput_long (%sa,%s);\n", to, from);
printf ("\tput_long (%sa, %s);\n", to, from);
count_write += 2;
break;
default:
......@@ -2071,7 +2071,7 @@ static void gen_opcode (unsigned long int opcode)
break;
case i_RESET:
fill_prefetch_next ();
printf ("\tcpureset();\n");
printf ("\tcpureset ();\n");
addcycles000 (128);
if (using_prefetch)
printf ("\tregs.irc = get_iword (4);\n");
......@@ -2274,10 +2274,10 @@ static void gen_opcode (unsigned long int opcode)
fill_prefetch_1 (0);
if (curi->smode == Ad8r || curi->smode == PC8r)
addcycles000 (6);
printf("\tm68k_areg (regs, 7) -= 4;\n");
printf ("\tm68k_areg (regs, 7) -= 4;\n");
if (using_ce) {
printf("\tput_word_ce (m68k_areg (regs, 7), oldpc >> 16);\n");
printf("\tput_word_ce (m68k_areg (regs, 7) + 2, oldpc);\n");
printf ("\tput_word_ce (m68k_areg (regs, 7), oldpc >> 16);\n");
printf ("\tput_word_ce (m68k_areg (regs, 7) + 2, oldpc);\n");
} else {
printf ("\t%s (m68k_areg (regs, 7), oldpc);\n", dstl);
}
......@@ -2416,7 +2416,7 @@ static void gen_opcode (unsigned long int opcode)
printf ("\tif (!cctrue (%d)) {\n", curi->cc);
incpc ("(uae_s32)offs + 2");
printf ("\t"); fill_prefetch_1 (0);
printf ("\t"); genastore ("(src-1)", curi->smode, "srcreg", curi->size, "src");
printf ("\t"); genastore ("(src - 1)", curi->smode, "srcreg", curi->size, "src");
printf ("\t\tif (src) {\n");
addcycles_ce020 (4);
......@@ -2491,7 +2491,7 @@ static void gen_opcode (unsigned long int opcode)
printf ("\t\tif (newv > 0xffff) {\n");
printf ("\t\t\tSET_VFLG (1);\n");
#ifdef UNDEF68020
if (currprefs.cpu_model >= 68020)
if (cpu_level >= 2)
printf ("\t\t\tif (currprefs.cpu_model == 68000 || dst < 0) SET_NFLG (&regs, 1);\n");
else /* ??? some 68000 revisions may not set NFLG when overflow happens.. */
#endif
......@@ -2789,7 +2789,7 @@ static void gen_opcode (unsigned long int opcode)
case i_ROL:
genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0);
genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0);
fill_prefetch_next();
fill_prefetch_next ();
start_brace ();
switch (curi->size) {
case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break;
......@@ -2819,7 +2819,7 @@ static void gen_opcode (unsigned long int opcode)
case i_ROR:
genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0);
genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0);
fill_prefetch_next();
fill_prefetch_next ();
start_brace ();
switch (curi->size) {
case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break;
......@@ -2849,7 +2849,7 @@ static void gen_opcode (unsigned long int opcode)
case i_ROXL:
genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0);
genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0);
fill_prefetch_next();
fill_prefetch_next ();
start_brace ();
switch (curi->size) {
case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break;
......@@ -2882,7 +2882,7 @@ static void gen_opcode (unsigned long int opcode)
case i_ROXR:
genamode (curi->smode, "srcreg", curi->size, "cnt", 1, 0, 0);
genamode (curi->dmode, "dstreg", curi->size, "data", 1, 0, 0);
fill_prefetch_next();
fill_prefetch_next ();
start_brace ();
switch (curi->size) {
case sz_byte: printf ("\tuae_u32 val = (uae_u8)data;\n"); break;
......@@ -3258,7 +3258,7 @@ static void gen_opcode (unsigned long int opcode)
printf ("\ttmp = 0;\n");
break;
case i_BFFFO:
printf ("\t{ uae_u32 mask = 1 << (width-1);\n");
printf ("\t{ uae_u32 mask = 1 << (width - 1);\n");
printf ("\twhile (mask) { if (tmp & mask) break; mask >>= 1; offset++; }}\n");
printf ("\tm68k_dreg (regs, (extra >> 12) & 7) = offset;\n");
break;
......@@ -3411,7 +3411,7 @@ static void gen_opcode (unsigned long int opcode)
/* MOVE16 (Ax)+,(Ay)+ */
printf ("\tuae_u32 v1, v2, v3, v4;\n");
printf ("\tuaecptr mems = m68k_areg (regs, srcreg) & ~15, memd;\n");
printf ("\tdstreg = (%s >> 12) & 7;\n", gen_nextiword(0));
printf ("\tdstreg = (%s >> 12) & 7;\n", gen_nextiword (0));
printf ("\tmemd = m68k_areg (regs, dstreg) & ~15;\n");
printf ("\tv1 = %s (mems);\n", srcl);
printf ("\tv2 = %s (mems + 4);\n", srcl);
......@@ -3809,6 +3809,7 @@ int main (int argc, char **argv)
* I don't dare to touch the 68k version. */
headerfile = fopen ("cputbl.h", "wb");
stblfile = fopen ("cpustbl.c", "wb");
generate_includes (stblfile);
......
......@@ -100,6 +100,10 @@ enum { CP_GENERIC = 1, CP_CDTV, CP_CD32, CP_A500, CP_A500P, CP_A600, CP_A1000,
#define IDE_A600A1200 1
#define IDE_A4000 2
#define GFX_WINDOW 0
#define GFX_FULLSCREEN 1
#define GFX_FULLWINDOW 2
struct uae_prefs {
struct strlist *all_lines;
......@@ -291,6 +295,7 @@ struct uae_prefs {
TCHAR amaxromfile[MAX_DPATH];
TCHAR a2065name[MAX_DPATH];
TCHAR cdimagefile[MAX_DPATH];
TCHAR quitstatefile[MAX_DPATH];
#ifndef WIN32
char scsi_device[256];
#endif
......@@ -422,7 +427,6 @@ struct uae_prefs {
/* input */
TCHAR inputname[256];
struct jport jports[MAX_JPORTS];
int input_selected_setting;
int input_joymouse_multiplier;
......
......@@ -4,7 +4,7 @@ running configure, to aid debugging if configure makes a mistake.
It was created by configure, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ ./configure --disable-option-checking --prefix=/usr/local --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --with-caps --with-gayle --enable-drvsnd --enable-amax --enable-cd32 --enable-scsi-device --cache-file=/dev/null --srcdir=.
$ ./configure --disable-option-checking --prefix=/usr/local --with-sdl --with-sdl-gl --with-sdl-gfx --with-sdl-sound --with-caps --with-gayle --enable-drvsnd --enable-amax --enable-cd32 --enable-scsi-device --disable-jit --cache-file=/dev/null --srcdir=.
## --------- ##
## Platform. ##
......@@ -445,7 +445,7 @@ configure:4344: $? = 0
configure:4344: result: yes
configure:4350: checking for _doprnt
configure:4350: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccBiDfLi.o: In function `main':
/tmp/cc4EAiYz.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:67: undefined reference to `_doprnt'
collect2: ld returned 1 exit status
configure:4350: $? = 1
......@@ -533,7 +533,7 @@ configure:4364: $? = 0
configure:4364: result: yes
configure:4364: checking for strcmpi
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/ccpI9QLu.o: In function `main':
/tmp/ccFh4SgP.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `strcmpi'
collect2: ld returned 1 exit status
configure:4364: $? = 1
......@@ -613,7 +613,7 @@ configure: failed program was:
configure:4364: result: no
configure:4364: checking for stricmp
configure:4364: gcc -o conftest -g -O2 -Wall -W -Wno-unused conftest.c >&5
/tmp/cc94CjOB.o: In function `main':
/tmp/ccn7jZ5T.o: In function `main':
/home/gnostic/puaex/src/tools/conftest.c:69: undefined reference to `stricmp'
collect2: ld returned 1 exit status
configure:4364: $? = 1
......
......@@ -438,7 +438,7 @@ $config_links
Report bugs to the package provider."
ac_cs_config="'--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--cache-file=/dev/null' '--srcdir=.'"
ac_cs_config="'--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--disable-jit' '--cache-file=/dev/null' '--srcdir=.'"
ac_cs_version="\
config.status
configured by ./configure, generated by GNU Autoconf 2.65,
......@@ -522,7 +522,7 @@ if $ac_cs_silent; then
fi
if $ac_cs_recheck; then
set X '/bin/bash' './configure' '--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--cache-file=/dev/null' '--srcdir=.' $ac_configure_extra_args --no-create --no-recursion
set X '/bin/bash' './configure' '--disable-option-checking' '--prefix=/usr/local' '--with-sdl' '--with-sdl-gl' '--with-sdl-gfx' '--with-sdl-sound' '--with-caps' '--with-gayle' '--enable-drvsnd' '--enable-amax' '--enable-cd32' '--enable-scsi-device' '--disable-jit' '--cache-file=/dev/null' '--srcdir=.' $ac_configure_extra_args --no-create --no-recursion
shift
$as_echo "running CONFIG_SHELL=/bin/bash $*" >&6
CONFIG_SHELL='/bin/bash'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment