|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * Miscellaneous machine dependent support functions and definitions ! 5: * ! 6: * Copyright 1996 Bernd Schmidt ! 7: */ ! 8: ! 9: #include "sysconfig.h" ! 10: #include "sysdeps.h" ! 11: ! 12: #include "config.h" ! 13: #include "options.h" ! 14: #include "events.h" ! 15: #include "machdep/m68k.h" ! 16: ! 17: struct flag_struct regflags; ! 18: ! 19: int fast_memcmp(const void *foo, const void *bar, int len) ! 20: { ! 21: return memcmp(foo, bar, len); ! 22: } ! 23: ! 24: int memcmpy(void *foo, const void *bar, int len) ! 25: { ! 26: while ((len -= 4) >= 0) ! 27: if(*((long*)foo)++ != *((long*)bar)++) ! 28: goto diff4; ! 29: len += 4; ! 30: ! 31: while (len--) ! 32: if (*((char*)foo)++ != *((char*)bar)++) { ! 33: ((char*)foo)[-1] = ((char*)bar)[-1]; ! 34: goto diff1; ! 35: } ! 36: return 0; ! 37: ! 38: diff4: ! 39: ((long*)foo)[-1] = ((long*)bar)[-1]; ! 40: while ((len -= 4) >= 0) ! 41: *((long*)foo)++ = *((long*)bar)++; ! 42: len += 4; ! 43: ! 44: diff1: ! 45: while (len--) ! 46: *((char*)foo)++ = *((char*)bar)++; ! 47: return 1; ! 48: } ! 49: ! 50: static volatile frame_time_t last_time, best_time; ! 51: static volatile int loops_to_go; ! 52: ! 53: void machdep_init (void) ! 54: { ! 55: rpt_available = 1; ! 56: fprintf(stderr, "Calibrating delay loop.. "); ! 57: fflush(stderr); ! 58: loops_to_go = 5; ! 59: ! 60: sync(); ! 61: last_time = read_processor_time(); ! 62: usleep(loops_to_go * 1000000); ! 63: best_time = read_processor_time()-last_time; ! 64: sync(); ! 65: ! 66: vsynctime = best_time / (50*loops_to_go); ! 67: fprintf(stderr,"ok - %d\n",best_time/loops_to_go); ! 68: last_time = read_processor_time(); ! 69: best_time = read_processor_time()-last_time; ! 70: } ! 71: ! 72:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.