--- uae/src/autoconf.c 2018/04/24 16:39:54 1.1.1.3 +++ uae/src/autoconf.c 2018/04/24 16:42:02 1.1.1.4 @@ -70,7 +70,7 @@ int lasttrap; static void *extra_stack_list = NULL; -static void *get_extra_stack(void) +static void *get_extra_stack (void) { void *s = extra_stack_list; if (s) @@ -90,32 +90,32 @@ static void stack_stub (void *s, TrapFun { #ifdef CAN_DO_STACK_MAGIC /*printf("in stack_stub: %p %p %p %x\n", s, f, retval, (int)*retval);*/ - *retval = f(); + *retval = f (); /*write_log ("returning from stack_stub\n");*/ - longjmp(((jmp_buf *)s)[0], 1); + longjmp (((jmp_buf *)s)[0], 1); #endif } static void *current_extra_stack = NULL; static uaecptr m68k_calladdr; -static void do_stack_magic(TrapFunction f, void *s, int has_retval) +static void do_stack_magic (TrapFunction f, void *s, int has_retval) { #ifdef CAN_DO_STACK_MAGIC uaecptr a7; jmp_buf *j = (jmp_buf *)s; - switch (setjmp(j[0])) { + switch (setjmp (j[0])) { case 0: /* Returning directly */ current_extra_stack = s; if (has_retval == -1) { /*write_log ("finishing m68k mode return\n");*/ - longjmp(j[1], 1); + longjmp (j[1], 1); } /*write_log ("calling native function\n");*/ transfer_control (s, EXTRA_STACK_SIZE, stack_stub, f, has_retval); /* not reached */ - abort(); + abort (); case 1: /*write_log ("native function complete\n");*/ @@ -142,17 +142,16 @@ static void do_stack_magic(TrapFunction #endif } -static uae_u32 execute_fn_on_extra_stack(TrapFunction f, int has_retval) +static uae_u32 execute_fn_on_extra_stack (TrapFunction f, int has_retval) { - uae_u32 retval = 0; #ifdef CAN_DO_STACK_MAGIC - void *s = get_extra_stack(); + void *s = get_extra_stack (); do_stack_magic (f, s, has_retval); #endif return 0; } -static uae_u32 m68k_mode_return(void) +static uae_u32 m68k_mode_return (void) { #ifdef CAN_DO_STACK_MAGIC uaecptr a7 = m68k_areg(regs, 7); @@ -164,7 +163,7 @@ static uae_u32 m68k_mode_return(void) return 0; } -static uae_u32 call_m68k(uaecptr addr, int saveregs) +static uae_u32 call_m68k (uaecptr addr, int saveregs) { volatile uae_u32 retval = 0; volatile int do_save = saveregs; @@ -196,7 +195,7 @@ static uae_u32 call_m68k(uaecptr addr, i return retval; } -uae_u32 CallLib(uaecptr base, uae_s16 offset) +uae_u32 CallLib (uaecptr base, uae_s16 offset) { int i; uaecptr olda6 = m68k_areg(regs, 6); @@ -221,13 +220,18 @@ uaecptr EXPANSION_bootcode, EXPANSION_nu static int current_deviceno = 0; -int get_new_device(char **devname, uaecptr *devname_amiga) +void reset_uaedevices (void) +{ + current_deviceno = 0; +} + +int get_new_device (char **devname, uaecptr *devname_amiga) { char buffer[80]; - sprintf(buffer,"UAE%d", current_deviceno); + sprintf (buffer, "UAE%d", current_deviceno); - *devname_amiga = ds(*devname = my_strdup(buffer)); + *devname_amiga = ds (*devname = my_strdup (buffer)); return current_deviceno++; } @@ -235,13 +239,13 @@ int get_new_device(char **devname, uaecp static uae_u8 rtarea[65536]; -static uae_u32 rtarea_lget(uaecptr) REGPARAM; -static uae_u32 rtarea_wget(uaecptr) REGPARAM; -static uae_u32 rtarea_bget(uaecptr) REGPARAM; -static void rtarea_lput(uaecptr, uae_u32) REGPARAM; -static void rtarea_wput(uaecptr, uae_u32) REGPARAM; -static void rtarea_bput(uaecptr, uae_u32) REGPARAM; -static uae_u8 *rtarea_xlate(uaecptr) REGPARAM; +static uae_u32 rtarea_lget (uaecptr) REGPARAM; +static uae_u32 rtarea_wget (uaecptr) REGPARAM; +static uae_u32 rtarea_bget (uaecptr) REGPARAM; +static void rtarea_lput (uaecptr, uae_u32) REGPARAM; +static void rtarea_wput (uaecptr, uae_u32) REGPARAM; +static void rtarea_bput (uaecptr, uae_u32) REGPARAM; +static uae_u8 *rtarea_xlate (uaecptr) REGPARAM; addrbank rtarea_bank = { rtarea_lget, rtarea_wget, rtarea_bget, @@ -249,34 +253,33 @@ addrbank rtarea_bank = { rtarea_xlate, default_check }; -uae_u8 REGPARAM2 *rtarea_xlate(uaecptr addr) +uae_u8 REGPARAM2 *rtarea_xlate (uaecptr addr) { addr &= 0xFFFF; return rtarea + addr; } -uae_u32 REGPARAM2 rtarea_lget(uaecptr addr) +uae_u32 REGPARAM2 rtarea_lget (uaecptr addr) { addr &= 0xFFFF; - return (uae_u32)(rtarea_wget(addr) << 16) + rtarea_wget(addr+2); + return (uae_u32)(rtarea_wget (addr) << 16) + rtarea_wget (addr+2); } -uae_u32 REGPARAM2 rtarea_wget(uaecptr addr) +uae_u32 REGPARAM2 rtarea_wget (uaecptr addr) { addr &= 0xFFFF; return (rtarea[addr]<<8) + rtarea[addr+1]; } -uae_u32 REGPARAM2 rtarea_bget(uaecptr addr) +uae_u32 REGPARAM2 rtarea_bget (uaecptr addr) { - uae_u16 data; addr &= 0xFFFF; return rtarea[addr]; } -void REGPARAM2 rtarea_lput(uaecptr addr, uae_u32 value) { } -void REGPARAM2 rtarea_wput(uaecptr addr, uae_u32 value) { } -void REGPARAM2 rtarea_bput(uaecptr addr, uae_u32 value) { } +void REGPARAM2 rtarea_lput (uaecptr addr, uae_u32 value) { } +void REGPARAM2 rtarea_wput (uaecptr addr, uae_u32 value) { } +void REGPARAM2 rtarea_bput (uaecptr addr, uae_u32 value) { } static int trace_traps = 1; @@ -286,10 +289,8 @@ void REGPARAM2 call_calltrap(int func) int has_retval = (trapmode[func] & TRAPFLAG_NO_RETVAL) == 0; int implicit_rts = (trapmode[func] & TRAPFLAG_DORET) != 0; - if (*trapstr[func] != 0 && trace_traps) { - sprintf (warning_buffer, "TRAP: %s\n", trapstr[func]); - write_log (warning_buffer); - } + if (*trapstr[func] != 0 && trace_traps) + write_log ("TRAP: %s\n", trapstr[func]); /* For monitoring only? */ if (traps[func] == NULL) { @@ -304,9 +305,9 @@ void REGPARAM2 call_calltrap(int func) return; } retval = (*traps[func])(); - } else { - fprintf(stderr, "illegal emulator trap\n"); - } + } else + write_log ("illegal emulator trap\n"); + if (has_retval) m68k_dreg(regs, 0) = retval; if (implicit_rts) { @@ -318,21 +319,21 @@ void REGPARAM2 call_calltrap(int func) /* @$%&§ compiler bugs */ static volatile int four = 4; -uaecptr libemu_InstallFunctionFlags(TrapFunction f, uaecptr libbase, int offset, - int flags, const char *tracename) +uaecptr libemu_InstallFunctionFlags (TrapFunction f, uaecptr libbase, int offset, + int flags, const char *tracename) { int i; uaecptr retval; - uaecptr execbase = get_long(four); + uaecptr execbase = get_long (four); int trnum; uaecptr addr = here(); - calltrap(trnum = deftrap2(f, flags, tracename)); - dw(RTS); + calltrap (trnum = deftrap2 (f, flags, tracename)); + dw (RTS); m68k_areg(regs, 1) = libbase; m68k_areg(regs, 0) = offset; m68k_dreg(regs, 0) = addr; - retval = CallLib(execbase, -420); + retval = CallLib (execbase, -420); trapoldfunc[trnum] = retval; #if 0 @@ -359,23 +360,23 @@ uaecptr libemu_InstallFunctionFlags(Trap static int rt_addr = 0; static int rt_straddr = 0xFF00 - 2; -uae_u32 addr(int ptr) +uae_u32 addr (int ptr) { return (uae_u32)ptr + 0x00F00000; } -void db(uae_u8 data) +void db (uae_u8 data) { rtarea[rt_addr++] = data; } -void dw(uae_u16 data) +void dw (uae_u16 data) { rtarea[rt_addr++] = data >> 8; rtarea[rt_addr++] = data; } -void dl(uae_u32 data) +void dl (uae_u32 data) { rtarea[rt_addr++] = data >> 24; rtarea[rt_addr++] = data >> 16; @@ -387,32 +388,32 @@ void dl(uae_u32 data) * backward. store pointer at current address */ -uae_u32 ds(char *str) +uae_u32 ds (char *str) { - int len = strlen(str) + 1; + int len = strlen (str) + 1; rt_straddr -= len; - strcpy((char *)rtarea + rt_straddr, str); + strcpy ((char *)rtarea + rt_straddr, str); - return addr(rt_straddr); + return addr (rt_straddr); } -void calltrap(uae_u32 n) +void calltrap (uae_u32 n) { - dw(0xA000 + n); + dw (0xA000 + n); } -void org(uae_u32 a) +void org (uae_u32 a) { rt_addr = a - 0x00F00000; } -uae_u32 here(void) +uae_u32 here (void) { - return addr(rt_addr); + return addr (rt_addr); } -int deftrap2(TrapFunction func, int mode, const char *str) +int deftrap2 (TrapFunction func, int mode, const char *str) { int num = max_trap++; traps[num] = func; @@ -421,53 +422,53 @@ int deftrap2(TrapFunction func, int mode return num; } -int deftrap(TrapFunction func) +int deftrap (TrapFunction func) { - return deftrap2(func, 0, ""); + return deftrap2 (func, 0, ""); } -void align(int b) +void align (int b) { - rt_addr = (rt_addr + (b-1)) & ~(b-1); + rt_addr = (rt_addr + b - 1) & ~(b - 1); } static uae_u32 nullfunc(void) { - fprintf(stderr, "Null function called\n"); + fprintf (stderr, "Null function called\n"); return 0; } static uae_u32 getchipmemsize (void) { - return chipmem_size; + return allocated_chipmem; } -void rtarea_init() +void rtarea_init (void) { uae_u32 a; char uaever[100]; - sprintf(uaever, "uae-%d.%d.%d", (version / 100) % 10, (version / 10) % 10, (version / 1) % 10); + sprintf (uaever, "uae-%d.%d.%d", UAEMAJOR, UAEMINOR, UAESUBREV); - EXPANSION_uaeversion = ds(uaever); - EXPANSION_explibname = ds("expansion.library"); - EXPANSION_doslibname = ds("dos.library"); - EXPANSION_uaedevname = ds("uae.device"); + EXPANSION_uaeversion = ds (uaever); + EXPANSION_explibname = ds ("expansion.library"); + EXPANSION_doslibname = ds ("dos.library"); + EXPANSION_uaedevname = ds ("uae.device"); - deftrap(NULL); /* Generic emulator trap */ + deftrap (NULL); /* Generic emulator trap */ lasttrap = 0; - EXPANSION_nullfunc = here(); - calltrap(deftrap(nullfunc)); - dw(RTS); + EXPANSION_nullfunc = here (); + calltrap (deftrap (nullfunc)); + dw (RTS); a = here(); /* Standard "return from 68k mode" trap */ - org(0xF0FF00); + org (0xF0FF00); calltrap (deftrap2 (m68k_mode_return, TRAPFLAG_NO_RETVAL, "")); org (0xF0FF80); calltrap (deftrap2 (getchipmemsize, TRAPFLAG_DORET, "")); - org(a); + org (a); filesys_install_code (); }