--- hatari/src/debug/log.h 2019/04/09 08:53:03 1.1.1.5 +++ hatari/src/debug/log.h 2019/04/09 08:56:46 1.1.1.8 @@ -11,6 +11,40 @@ #include +/* Exception debugging + * ------------------- + */ + +/* CPU exception flags + * is catching needed also for: traps 0, 3-12, 15? (MonST catches them) + */ +#define EXCEPT_BUS (1<<0) +#define EXCEPT_ADDRESS (1<<1) +#define EXCEPT_ILLEGAL (1<<2) +#define EXCEPT_ZERODIV (1<<3) +#define EXCEPT_CHK (1<<4) +#define EXCEPT_TRAPV (1<<5) +#define EXCEPT_PRIVILEGE (1<<6) +#define EXCEPT_TRACE (1<<7) +#define EXCEPT_NOHANDLER (1<<8) + +/* DSP exception flags */ +#define EXCEPT_DSP (1<<9) + +/* whether to enable exception debugging on autostart */ +#define EXCEPT_AUTOSTART (1<<10) + +/* general flags */ +#define EXCEPT_NONE (0) +#define EXCEPT_ALL (~EXCEPT_AUTOSTART) + +/* defaults are same as with earlier -D option */ +#define DEFAULT_EXCEPTIONS (EXCEPT_BUS|EXCEPT_ADDRESS|EXCEPT_DSP) + +extern int ExceptionDebugMask; +extern const char* Log_SetExceptionDebugMask(const char *OptionsStr); + + /* Logging * ------- * Is always enabled as it's information that can be useful @@ -34,6 +68,7 @@ typedef enum #define __attribute__(foo) #endif +extern void Log_Default(void); extern int Log_Init(void); extern int Log_SetAlertLevel(int level); extern void Log_UnInit(void); @@ -126,6 +161,20 @@ extern char *Log_MatchTrace(const char * #define TRACE_NVRAM (1ll<<45) +#define TRACE_SCSI_CMD (1ll<<46) + +#define TRACE_NATFEATS (1ll<<47) + +#define TRACE_KEYMAP (1ll<<48) + +#define TRACE_MIDI (1ll<<49) + +#define TRACE_IDE (1ll<<50) + +#define TRACE_OS_BASE (1ll<<51) + +#define TRACE_SCSIDRV (1ll<<52) + #define TRACE_NONE (0) #define TRACE_ALL (~0) @@ -142,7 +191,7 @@ extern char *Log_MatchTrace(const char * #define TRACE_IKBD_ALL ( TRACE_IKBD_CMDS | TRACE_IKBD_ACIA | TRACE_IKBD_EXEC ) -#define TRACE_OS_ALL ( TRACE_OS_BIOS | TRACE_OS_XBIOS | TRACE_OS_GEMDOS | TRACE_OS_AES | TRACE_OS_VDI ) +#define TRACE_OS_ALL ( TRACE_OS_BASE | TRACE_OS_BIOS | TRACE_OS_XBIOS | TRACE_OS_GEMDOS | TRACE_OS_AES | TRACE_OS_VDI ) #define TRACE_IOMEM_ALL ( TRACE_IOMEM_RD | TRACE_IOMEM_WR ) @@ -154,17 +203,15 @@ extern Uint64 LogTraceFlags; #if ENABLE_TRACING -#ifndef _VCWIN_ -#define LOG_TRACE(level, args...) \ - if (unlikely(LogTraceFlags & level)) { fprintf(TraceFile, args); fflush(TraceFile); } -#endif -#define LOG_TRACE_LEVEL( level ) (unlikely(LogTraceFlags & level)) +#define LOG_TRACE(level, ...) \ + if (unlikely(LogTraceFlags & (level))) { fprintf(TraceFile, __VA_ARGS__); fflush(TraceFile); } + +#define LOG_TRACE_LEVEL( level ) (unlikely(LogTraceFlags & (level))) #else /* ENABLE_TRACING */ -#ifndef _VCWIN_ -#define LOG_TRACE(level, args...) {} -#endif +#define LOG_TRACE(level, ...) {} + #define LOG_TRACE_LEVEL( level ) (0) #endif /* ENABLE_TRACING */ @@ -173,9 +220,7 @@ extern Uint64 LogTraceFlags; * In code it's used in such a way that it will be optimized away when tracing * is disabled. */ -#ifndef _VCWIN_ -#define LOG_TRACE_PRINT(args...) fprintf(TraceFile , args) -#endif +#define LOG_TRACE_PRINT(...) fprintf(TraceFile , __VA_ARGS__) #endif /* HATARI_LOG_H */