--- hatari/src/uae-cpu/sysdeps.h 2019/04/01 07:09:16 1.1.1.1 +++ hatari/src/uae-cpu/sysdeps.h 2019/04/01 07:13:13 1.1.1.7 @@ -1,5 +1,5 @@ /* - * UAE - The Un*x Amiga Emulator + * UAE - The Un*x Amiga Emulator - CPU core * * Try to include the right system headers and get other system-specific * stuff right & other collected kludges. @@ -10,19 +10,15 @@ * it's actually needed by the .c file. * * Copyright 1996, 1997 Bernd Schmidt + * + * Adaptation to Hatari by Thomas Huth + * + * This file is distributed under the GNU Public License, version 2 or at + * your option any later version. Read the file gpl.txt for details. */ -#ifndef UAESYSDEPS -#define UAESYSDEPS - - -/* FIXME: We should use a test instead: */ -/* The number of bytes in a short. */ -#define SIZEOF_SHORT 2 -/* The number of bytes in a int. */ -#define SIZEOF_INT 4 -/* The number of bytes in a long. */ -#define SIZEOF_LONG 4 +#ifndef UAE_SYSDEPS_H +#define UAE_SYSDEPS_H #include #include @@ -36,69 +32,12 @@ #include -#ifdef HAVE_SYS_TYPES_H -#include -#endif - -#ifdef HAVE_VALUES_H -#include -#endif - -#ifdef HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_STRING_H -#include -#endif - -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_FCNTL_H -#include -#endif - -#ifdef HAVE_UTIME_H -#include -#endif - -#ifdef HAVE_SYS_STAT_H -#include -#endif - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -#if HAVE_DIRENT_H -# include -#else -# define dirent direct -# if HAVE_SYS_NDIR_H -# include -# endif -# if HAVE_SYS_DIR_H -# include -# endif -# if HAVE_NDIR_H -# include -# endif -#endif - -#ifdef HAVE_SYS_UTIME_H -# include -#endif - #include #include +#include + + #if EEXIST == ENOTEMPTY #define BROKEN_OS_PROBABLY_AIX #endif @@ -115,34 +54,6 @@ struct utimbuf }; #endif -#if defined(__GNUC__) && defined(AMIGA) -/* gcc on the amiga need that __attribute((regparm)) must */ -/* be defined in function prototypes as well as in */ -/* function definitions ! */ -#define REGPARAM2 REGPARAM -#else /* not(GCC & AMIGA) */ -#define REGPARAM2 -#endif - -/* sam: some definitions so that SAS/C can compile UAE */ -#if defined(__SASC) && defined(AMIGA) -#define REGPARAM2 -#define REGPARAM -#define S_IRUSR S_IREAD -#define S_IWUSR S_IWRITE -#define S_IXUSR S_IEXECUTE -#define S_ISDIR(val) (S_IFDIR & val) -#define mkdir(x,y) mkdir(x) -#define truncate(x,y) 0 -#define creat(x,y) open("T:creat",O_CREAT|O_TEMP|O_RDWR) /* sam: for zfile.c */ -#define strcasecmp stricmp -#define utime(file,time) 0 -struct utimbuf -{ - time_t actime; - time_t modtime; -}; -#endif #if defined(WARPUP) #include "devices/timer.h" @@ -161,10 +72,6 @@ extern void* q_memset(void*,int,size_t); extern void* q_memcpy(void*,const void*,size_t); #endif -#ifdef __DOS__ -#include -#include -#endif /* Acorn specific stuff */ #ifdef ACORN @@ -177,65 +84,34 @@ extern void* q_memcpy(void*,const void*, #endif -#ifndef L_tmpnam -#define L_tmpnam 128 /* ought to be safe */ -#endif -/* If char has more then 8 bits, good night. */ -typedef unsigned char uae_u8; -typedef signed char uae_s8; - -typedef struct { uae_u8 RGB[3]; } RGB; - -#if SIZEOF_SHORT == 2 -typedef unsigned short uae_u16; -typedef short uae_s16; -#elif SIZEOF_INT == 2 -typedef unsigned int uae_u16; -typedef int uae_s16; -#else -#error No 2 byte type, you lose. -#endif +/* The variable-types used in the CPU core: */ +typedef uint8_t uae_u8; +typedef int8_t uae_s8; -#if SIZEOF_INT == 4 -typedef unsigned int uae_u32; -typedef int uae_s32; -#elif SIZEOF_LONG == 4 -typedef unsigned long uae_u32; -typedef long uae_s32; -#else -#error No 4 byte type, you lose. -#endif +typedef uint16_t uae_u16; +typedef int16_t uae_s16; + +typedef uint32_t uae_u32; +typedef int32_t uae_s32; typedef uae_u32 uaecptr; #undef uae_s64 #undef uae_u64 -#if SIZEOF_LONG_LONG == 8 -#define uae_s64 long long -#define uae_u64 long long -#define VAL64(a) (a ## LL) -#define UVAL64(a) (a ## uLL) -#elif SIZEOF___INT64 == 8 -#define uae_s64 __int64 -#define uae_u64 unsigned __int64 -#define VAL64(a) (a) -#define UVAL64(a) (a) -#elif SIZEOF_LONG == 8 -#define uae_s64 long; -#define uae_u64 unsigned long; -#define VAL64(a) (a ## l) -#define UVAL64(a) (a ## ul) -#endif - -#ifdef HAVE_STRDUP -#define my_strdup strdup -#else -extern char *my_strdup (const char*s); +#if defined(INT64_MAX) +# define uae_u64 uint64_t +# define uae_s64 int64_t +# if defined(__GNUC__) || defined(__MWERKS__) || defined(__SUNPRO_C) +# define VAL64(a) (a ## LL) +# define UVAL64(a) (a ## ULL) +# else +# define VAL64(a) (a ## L) +# define UVAL64(a) (a ## UL) +# endif #endif -extern void *xmalloc(size_t); /* We can only rely on GNU C getting enums right. Mickeysoft VSC++ is known * to have problems, and it's likely that other compilers choke too. */ @@ -247,129 +123,15 @@ extern void *xmalloc(size_t); #define ENUMNAME(name) ; typedef int name #endif -/* - * Porters to weird systems, look! This is the preferred way to get - * filesys.c (and other stuff) running on your system. Define the - * appropriate macros and implement wrappers in a machine-specific file. - * - * I guess the Mac port could use this (Ernesto?) - */ - -#undef DONT_HAVE_POSIX -#undef DONT_HAVE_REAL_POSIX /* define if open+delete doesn't do what it should */ -#undef DONT_HAVE_STDIO -#undef DONT_HAVE_MALLOC - -#if defined(WARPUP) -#define DONT_HAVE_POSIX -#endif - -#if defined _WIN32 - -#if defined __WATCOMC__ - -#define O_NDELAY 0 -#include -#define dirent direct -#define mkdir(a,b) mkdir(a) -#define strcasecmp stricmp - -#elif defined __MINGW32__ - -#define O_NDELAY 0 -#define mkdir(a,b) mkdir(a) - -#endif - -#endif /* _WIN32 */ - -#ifdef DONT_HAVE_POSIX - -#define access posixemu_access -extern int posixemu_access (const char *, int); -#define open posixemu_open -extern int posixemu_open (const char *, int, int); -#define close posixemu_close -extern void posixemu_close (int); -#define read posixemu_read -extern int posixemu_read (int, char *, int); -#define write posixemu_write -extern int posixemu_write (int, const char *, int); -#undef lseek -#define lseek posixemu_seek -extern int posixemu_seek (int, int, int); -#define stat(a,b) posixemu_stat ((a), (b)) -extern int posixemu_stat (const char *, STAT *); -#define mkdir posixemu_mkdir -extern int mkdir (const char *, int); -#define rmdir posixemu_rmdir -extern int posixemu_rmdir (const char *); -#define unlink posixemu_unlink -extern int posixemu_unlink (const char *); -#define truncate posixemu_truncate -extern int posixemu_truncate (const char *, long int); -#define rename posixemu_rename -extern int posixemu_rename (const char *, const char *); -#define chmod posixemu_chmod -extern int posixemu_chmod (const char *, int); -#define tmpnam posixemu_tmpnam -extern void posixemu_tmpnam (char *); -#define utime posixemu_utime -extern int posixemu_utime (const char *, struct utimbuf *); -#define opendir posixemu_opendir -extern DIR * posixemu_opendir (const char *); -#define readdir posixemu_readdir -extern struct dirent* readdir (DIR *); -#define closedir posixemu_closedir -extern void closedir (DIR *); - -/* This isn't the best place for this, but it fits reasonably well. The logic - * is that you probably don't have POSIX errnos if you don't have the above - * functions. */ -extern long dos_errno (void); - -#endif - -#ifdef DONT_HAVE_STDIO - -extern FILE *stdioemu_fopen (const char *, const char *); -#define fopen(a,b) stdioemu_fopen(a, b) -extern int stdioemu_fseek (FILE *, int, int); -#define fseek(a,b,c) stdioemu_fseek(a, b, c) -extern int stdioemu_fread (char *, int, int, FILE *); -#define fread(a,b,c,d) stdioemu_fread(a, b, c, d) -extern int stdioemu_fwrite (const char *, int, int, FILE *); -#define fwrite(a,b,c,d) stdioemu_fwrite(a, b, c, d) -extern int stdioemu_ftell (FILE *); -#define ftell(a) stdioemu_ftell(a) -extern int stdioemu_fclose (FILE *); -#define fclose(a) stdioemu_fclose(a) - -#endif - -#ifdef DONT_HAVE_MALLOC - -#define malloc(a) mallocemu_malloc(a) -extern void *mallocemu_malloc (int size); -#define free(a) mallocemu_free(a) -extern void mallocemu_free (void *ptr); - -#endif - -#ifdef X86_ASSEMBLY -#define ASM_SYM_FOR_FUNC(a) __asm__(a) -#else -#define ASM_SYM_FOR_FUNC(a) -#endif - -#if defined USE_COMPILER -#undef NO_PREFETCH_BUFFER -#undef NO_EXCEPTION_3 -#define NO_EXCEPTION_3 -#define NO_PREFETCH_BUFFER +/* When using GNU C, make abort more useful. */ +#ifdef __GNUC__ +#define abort() \ + do { \ + fprintf(stderr, "Internal error; file %s, line %d\n", __FILE__, __LINE__); \ + (abort) (); \ +} while (0) #endif -/*#include "target.h"*/ #ifndef O_BINARY #define O_BINARY 0 @@ -394,4 +156,4 @@ extern void mallocemu_free (void *ptr); # define REGPARAM2 #endif -#endif /* ifndef UAESYSDEPS */ +#endif /* ifndef UAE_SYSDEPS_H */