diff options
54 files changed, 449 insertions, 411 deletions
diff --git a/src/Kconfig b/src/Kconfig index 266267ca14..96413ffd3f 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -609,6 +609,190 @@ config GDB_STUB If enabled, you will be able to set breakpoints for gdb debugging. See src/arch/i386/lib/c_start.S for details. +config DEBUG_RAM_SETUP + bool "Output verbose RAM init debug messages" + default n + depends on (NORTHBRIDGE_AMD_AMDFAM10 \ + || NORTHBRIDGE_AMD_AMDK8 \ + || NORTHBRIDGE_VIA_CN700 \ + || NORTHBRIDGE_VIA_CX700 \ + || NORTHBRIDGE_VIA_VX800 \ + || NORTHBRIDGE_INTEL_E7501 \ + || NORTHBRIDGE_INTEL_I440BX \ + || NORTHBRIDGE_INTEL_I82810 \ + || NORTHBRIDGE_INTEL_I82830 \ + || NORTHBRIDGE_INTEL_I945) + help + This option enables additional RAM init related debug messages. + It is recommended to enable this when debugging issues on your + board which might be RAM init related. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config DEBUG_SMBUS + bool "Output verbose SMBus debug messages" + default n + depends on (SOUTHBRIDGE_VIA_VT8237R \ + || NORTHBRIDGE_VIA_VX800 \ + || NORTHBRIDGE_VIA_CX700 \ + || NORTHBRIDGE_AMD_AMDK8) + help + This option enables additional SMBus (and SPD) debug messages. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config DEBUG_SMI + bool "Output verbose SMI debug messages" + default n + depends on HAVE_SMI_HANDLER + help + This option enables additional SMI related debug messages. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG + bool "Output verbose x86emu debug messages" + default n + depends on PCI_OPTION_ROM_RUN_YABEL + help + This option enables additional x86emu related debug messages. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_JMP + bool "Trace JMP/RETF" + default n + depends on X86EMU_DEBUG + help + Print information about JMP and RETF opcodes from x86emu. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_TRACE + bool "Trace all opcodes" + default n + depends on X86EMU_DEBUG + help + Print _all_ opcodes that are executed by x86emu. + + WARNING: This will produce a LOT of output and take a long time. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_PNP + bool "Log Plug&Play accesses" + default n + depends on X86EMU_DEBUG + help + Print Plug And Play accesses made by option ROMs. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_DISK + bool "Log Disk I/O" + default n + depends on X86EMU_DEBUG + help + Print Disk I/O related messages. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_PMM + bool "Log PMM" + default n + depends on X86EMU_DEBUG + help + Print messages related to POST Memory Manager (PMM). + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + + +config X86EMU_DEBUG_VBE + bool "Debug VESA BIOS Extensions" + default n + depends on X86EMU_DEBUG + help + Print messages related to VESA BIOS Extension (VBE) functions. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_INT10 + bool "Redirect INT10 output to console" + default n + depends on X86EMU_DEBUG + help + Let INT10 (i.e. character output) calls print messages to debug output. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_INTERRUPTS + bool "Log intXX calls" + default n + depends on X86EMU_DEBUG + help + Print messages related to interrupt handling. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_CHECK_VMEM_ACCESS + bool "Log special memory accesses" + default n + depends on X86EMU_DEBUG + help + Print messages related to accesses to certain areas of the virtual + memory (e.g. BDA (BIOS Data Area) or interrupt vectors) + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_MEM + bool "Log all memory accesses" + default n + depends on X86EMU_DEBUG + help + Print memory accesses made by option ROM. + Note: This also includes accesses to fetch instructions. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + +config X86EMU_DEBUG_IO + bool "Log IO accesses" + default n + depends on X86EMU_DEBUG + help + Print I/O accesses made by option ROM. + + Note: This option will increase the size of the coreboot image. + + If unsure, say N. + endmenu config LIFT_BSP_APIC_ID diff --git a/src/console/printk.c b/src/console/printk.c index e06468236c..886e2cfa72 100644 --- a/src/console/printk.c +++ b/src/console/printk.c @@ -19,8 +19,6 @@ /* Keep together for sysctl support */ int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; -int default_message_loglevel = DEFAULT_MESSAGE_LOGLEVEL; -int minimum_console_loglevel = MINIMUM_CONSOLE_LOGLEVEL; int default_console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; DECLARE_SPIN_LOCK(console_lock) diff --git a/src/cpu/x86/smm/smihandler.c b/src/cpu/x86/smm/smihandler.c index dea0262dcd..00cae1005f 100644 --- a/src/cpu/x86/smm/smihandler.c +++ b/src/cpu/x86/smm/smihandler.c @@ -27,8 +27,6 @@ void southbridge_smi_set_eos(void); -/* To enable SMI define DEBUG_SMI in smiutil.c */ - typedef enum { SMI_LOCKED, SMI_UNLOCKED } smi_semaphore; /* SMI multiprocessing semaphore */ diff --git a/src/cpu/x86/smm/smiutil.c b/src/cpu/x86/smm/smiutil.c index 95453e8224..1baaecf2a1 100644 --- a/src/cpu/x86/smm/smiutil.c +++ b/src/cpu/x86/smm/smiutil.c @@ -25,8 +25,6 @@ #include <cpu/x86/cache.h> #include <cpu/x86/smm.h> -// #define DEBUG_SMI - /* ********************* smi_util ************************* */ /* Data */ @@ -119,7 +117,7 @@ void uart_init(void) void console_init(void) { -#ifdef DEBUG_SMI +#if CONFIG_DEBUG_SMI console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; uart_init(); #else diff --git a/src/devices/Kconfig b/src/devices/Kconfig index 5e13e4e393..151492d6c8 100644 --- a/src/devices/Kconfig +++ b/src/devices/Kconfig @@ -74,63 +74,6 @@ config PCI_OPTION_ROM_RUN_YABEL endchoice -# TODO: Describe better, and/or make a "choice" selection for this. -config YABEL_DEBUG_FLAGS - prompt "Hex value for YABEL debug flags" - hex - default 0x0 - depends on PCI_OPTION_ROM_RUN_YABEL - help - CONFIG_YABEL_DEBUG_FLAGS is a binary switch that allows you - to select the following items to debug. 1=on 0=off. After you - decide what you want to debug create the binary value, convert to - hex and set the option. - - Example for "debug all": - CONFIG_YABEL_DEBUG_FLAGS = 0x31FF - - |-DEBUG_JMP - Print info about JMP and RETF opcodes from x86emu - ||-DEBUG_TRACE_X86EMU - Print _all_ opcodes that are executed by - || x86emu (WARNING: this will produce a LOT - || of output) - |||-Currently unused - ||||-Currently unused - |||||-Currently unused - ||||||-DEBUG_PNP - Print Plug And Play accesses made by option ROM - |||||||-DEBUG_DISK - Print Disk I/O related messages, currently unused - ||||||||-DEBUG_PMM - Print messages related to POST Memory - |||||||| Manager (PMM) - |||||||||-DEBUG_VBE - Print messages related to VESA BIOS Extension - ||||||||| (VBE) functions - ||||||||||-DEBUG_PRINT_INT10 - Let INT10 (i.e. character output) - |||||||||| calls print messages to debug output - |||||||||||-DEBUG_INTR - Print messages related to interrupt handling - ||||||||||||-DEBUG_CHECK_VMEM_ACCESS - Print messages related to - |||||||||||| accesses to certain areas of - |||||||||||| the virtual memory (e.g. BDA - |||||||||||| (BIOS Data Area) or interrupt - |||||||||||| vectors) - |||||||||||||-DEBUG_MEM - Print memory accesses made by option ROM - ||||||||||||| (NOTE: this also includes accesses to - ||||||||||||| fetch instructions) - ||||||||||||||-DEBUG_IO - Print I/O accesses made by option ROM - 11000111111111 - Maximum binary value, i.e. "debug all" - (WARNING: This could run for hours) - - DEBUG_IO 0x0001 - DEBUG_MEM 0x0002 - DEBUG_CHECK_VMEM_ACCESS 0x0004 - DEBUG_INTR 0x0008 - DEBUG_PRINT_INT10 0x0010 - DEBUG_VBE 0x0020 - DEBUG_PMM 0x0040 - DEBUG_DISK 0x0080 - DEBUG_PNP 0x0100 - DEBUG_TRACE_X86EMU 0x1000 - DEBUG_JMP 0x2000 - - See debug.h for values. 0 is no debug output, 0x31ff is _verbose_. - config YABEL_PCI_ACCESS_OTHER_DEVICES prompt "Allow option ROMs to access other devices" bool @@ -150,6 +93,11 @@ config YABEL_VIRTMEM_LOCATION YABEL requires 1MB memory for its CPU emulation. This memory is normally located at 16MB. +config YABEL_VIRTMEM_LOCATION + hex + depends on PCI_OPTION_ROM_RUN_YABEL && !EXPERT + default 0x1000000 + config YABEL_DIRECTHW prompt "Direct hardware access" bool diff --git a/src/mainboard/amd/dbm690t/romstage.c b/src/mainboard/amd/dbm690t/romstage.c index c83759bbad..697319356f 100644 --- a/src/mainboard/amd/dbm690t/romstage.c +++ b/src/mainboard/amd/dbm690t/romstage.c @@ -57,7 +57,6 @@ #include "cpu/x86/lapic/boot_cpu.c" #include "northbridge/amd/amdk8/reset_test.c" -#include "northbridge/amd/amdk8/debug.c" #include "superio/ite/it8712f/it8712f_early_serial.c" #include "cpu/amd/mtrr/amd_earlymtrr.c" @@ -67,6 +66,7 @@ #include "southbridge/amd/rs690/rs690_early_setup.c" #include "southbridge/amd/sb600/sb600_early_setup.c" +#include "northbridge/amd/amdk8/debug.c" /* After sb600_early_setup.c! */ /* CAN'T BE REMOVED! crt0.S will use it. I don't know WHY!*/ static void memreset(int controllers, const struct mem_controller *ctrl) diff --git a/src/mainboard/amd/pistachio/romstage.c b/src/mainboard/amd/pistachio/romstage.c index 2e5c4a0812..d440f4d2f9 100644 --- a/src/mainboard/amd/pistachio/romstage.c +++ b/src/mainboard/amd/pistachio/romstage.c @@ -51,7 +51,6 @@ #include "cpu/x86/lapic/boot_cpu.c" #include "northbridge/amd/amdk8/reset_test.c" -#include "northbridge/amd/amdk8/debug.c" #include "superio/ite/it8712f/it8712f_early_serial.c" #include "cpu/amd/mtrr/amd_earlymtrr.c" @@ -61,6 +60,7 @@ #include "southbridge/amd/rs690/rs690_early_setup.c" #include "southbridge/amd/sb600/sb600_early_setup.c" +#include "northbridge/amd/amdk8/debug.c" /* After sb600_early_setup.c! */ /* CAN'T BE REMOVED! crt0.S will use it. I don't know WHY!*/ static void memreset(int controllers, const struct mem_controller *ctrl) diff --git a/src/mainboard/amd/serengeti_cheetah_fam10/romstage.c b/src/mainboard/amd/serengeti_cheetah_fam10/romstage.c index 67c7dbf551..82a404b50b 100644 --- a/src/mainboard/amd/serengeti_cheetah_fam10/romstage.c +++ b/src/mainboard/amd/serengeti_cheetah_fam10/romstage.c @@ -29,8 +29,6 @@ #define RAMINIT_SYSINFO 1 #define CACHE_AS_RAM_ADDRESS_DEBUG 1 -#define DEBUG_SMBUS 1 - #define SET_NB_CFG_54 1 //used by raminit diff --git a/src/mainboard/asus/a8n_e/romstage.c b/src/mainboard/asus/a8n_e/romstage.c index 8e0ba2925e..ae70c847f3 100644 --- a/src/mainboard/asus/a8n_e/romstage.c +++ b/src/mainboard/asus/a8n_e/romstage.c @@ -30,9 +30,6 @@ /* Used by raminit. */ #define QRANK_DIMM_SUPPORT 1 -/* Turn this on for SMBus debugging output. */ -#define DEBUG_SMBUS 0 - #if CONFIG_LOGICAL_CPUS == 1 #define SET_NB_CFG_54 1 #endif diff --git a/src/mainboard/asus/a8v-e_se/romstage.c b/src/mainboard/asus/a8v-e_se/romstage.c index 4ec3aee813..b6c3c3f686 100644 --- a/src/mainboard/asus/a8v-e_se/romstage.c +++ b/src/mainboard/asus/a8v-e_se/romstage.c @@ -40,8 +40,6 @@ unsigned int get_sbdn(unsigned bus); /* If we want to wait for core1 done before DQS training, set it to 0. */ #define K8_SET_FIDVID_CORE0_ONLY 1 -/* #define DEBUG_SMBUS 1 */ - #include <stdint.h> #include <string.h> #include <device/pci_def.h> @@ -59,10 +57,10 @@ unsigned int get_sbdn(unsigned bus); #include "lib/delay.c" #include "cpu/x86/lapic/boot_cpu.c" #include "northbridge/amd/amdk8/reset_test.c" -#include "northbridge/amd/amdk8/debug.c" #include "northbridge/amd/amdk8/early_ht.c" #include "superio/winbond/w83627ehg/w83627ehg_early_serial.c" #include "southbridge/via/vt8237r/vt8237r_early_smbus.c" +#include "northbridge/amd/amdk8/debug.c" /* After vt8237r_early_smbus.c! */ #include "cpu/amd/mtrr/amd_earlymtrr.c" #include "cpu/x86/bist.h" #include "northbridge/amd/amdk8/setup_resource_map.c" diff --git a/src/mainboard/asus/m2v-mx_se/romstage.c b/src/mainboard/asus/m2v-mx_se/romstage.c index 13101b0217..4f4b481b8a 100644 --- a/src/mainboard/asus/m2v-mx_se/romstage.c +++ b/src/mainboard/asus/m2v-mx_se/romstage.c @@ -44,8 +44,6 @@ unsigned int get_sbdn(unsigned bus); #define K8_REV_F_SUPPORT_F0_F1_WORKAROUND 0 #endif -/* #define DEBUG_SMBUS 1 */ - #include <stdint.h> #include <string.h> #include <device/pci_def.h> diff --git a/src/mainboard/kontron/986lcd-m/romstage.c b/src/mainboard/kontron/986lcd-m/romstage.c index 43c9b20bad..6ea41b6e4b 100644 --- a/src/mainboard/kontron/986lcd-m/romstage.c +++ b/src/mainboard/kontron/986lcd-m/romstage.c @@ -445,7 +445,7 @@ void real_main(unsigned long bist) #if !CONFIG_HAVE_ACPI_RESUME #if CONFIG_DEFAULT_CONSOLE_LOGLEVEL > 8 -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP sdram_dump_mchbar_registers(); #endif diff --git a/src/mainboard/msi/ms7135/romstage.c b/src/mainboard/msi/ms7135/romstage.c index 6616dc1444..9477c6e514 100644 --- a/src/mainboard/msi/ms7135/romstage.c +++ b/src/mainboard/msi/ms7135/romstage.c @@ -30,9 +30,6 @@ /* Used by raminit. */ #define QRANK_DIMM_SUPPORT 1 -/* Turn this on for SMBus debugging output. */ -#define DEBUG_SMBUS 0 - #if CONFIG_LOGICAL_CPUS == 1 #define SET_NB_CFG_54 1 #endif diff --git a/src/mainboard/msi/ms7260/romstage.c b/src/mainboard/msi/ms7260/romstage.c index 7a8bf13a79..a8697b5114 100644 --- a/src/mainboard/msi/ms7260/romstage.c +++ b/src/mainboard/msi/ms7260/romstage.c @@ -24,7 +24,6 @@ #define __PRE_RAM__ // #define CACHE_AS_RAM_ADDRESS_DEBUG 1 -// #define DEBUG_SMBUS 1 // #define RAM_TIMING_DEBUG 1 // #define DQS_TRAIN_DEBUG 1 // #define RES_DEBUG 1 diff --git a/src/mainboard/msi/ms9185/romstage.c b/src/mainboard/msi/ms9185/romstage.c index 255815707a..4903b3edd7 100644 --- a/src/mainboard/msi/ms9185/romstage.c +++ b/src/mainboard/msi/ms9185/romstage.c @@ -42,8 +42,6 @@ //if we want to wait for core1 done before DQS training, set it to 0 #define K8_SET_FIDVID_CORE0_ONLY 1 -#define DEBUG_SMBUS 1 - #include <stdint.h> #include <string.h> #include <device/pci_def.h> diff --git a/src/mainboard/msi/ms9282/romstage.c b/src/mainboard/msi/ms9282/romstage.c index 11c92b81fa..b552788a54 100644 --- a/src/mainboard/msi/ms9282/romstage.c +++ b/src/mainboard/msi/ms9282/romstage.c @@ -38,8 +38,6 @@ //if we want to wait for core1 done before DQS training, set it to 0 #define K8_SET_FIDVID_CORE0_ONLY 1 -#define DEBUG_SMBUS 1 - #include <stdint.h> #include <string.h> #include <device/pci_def.h> diff --git a/src/northbridge/amd/amdfam10/debug.c b/src/northbridge/amd/amdfam10/debug.c index bb0f865a00..7fea9a0483 100644 --- a/src/northbridge/amd/amdfam10/debug.c +++ b/src/northbridge/amd/amdfam10/debug.c @@ -220,11 +220,7 @@ static void dump_pci_devices_on_bus(u32 busn) } } -#ifndef DEBUG_SMBUS -#define DEBUG_SMBUS 0 -#endif - -#if DEBUG_SMBUS == 1 +#if CONFIG_DEBUG_SMBUS static void dump_spd_registers(const struct mem_controller *ctrl) { diff --git a/src/northbridge/amd/amdfam10/raminit_amdmct.c b/src/northbridge/amd/amdfam10/raminit_amdmct.c index 7bd6d4e4e7..c9f0c27b0b 100644 --- a/src/northbridge/amd/amdfam10/raminit_amdmct.c +++ b/src/northbridge/amd/amdfam10/raminit_amdmct.c @@ -23,21 +23,16 @@ static void print_raminit(const char *strval, u32 val) printk_debug("%s%08x\n", strval, val); } - -#define RAMINIT_DEBUG 1 - - static void print_tx(const char *strval, u32 val) { -#if RAMINIT_DEBUG == 1 +#if CONFIG_DEBUG_RAM_SETUP print_raminit(strval, val); #endif } - static void print_t(const char *strval) { -#if RAMINIT_DEBUG == 1 +#if CONFIG_DEBUG_RAM_SETUP print_debug(strval); #endif } diff --git a/src/northbridge/amd/amdk8/debug.c b/src/northbridge/amd/amdk8/debug.c index f9e9671a3e..acfd602c6d 100644 --- a/src/northbridge/amd/amdk8/debug.c +++ b/src/northbridge/amd/amdk8/debug.c @@ -134,11 +134,8 @@ static void dump_pci_devices_on_bus(unsigned busn) } } -#ifndef DEBUG_SMBUS -#define DEBUG_SMBUS 0 -#endif +#if CONFIG_DEBUG_SMBUS -#if DEBUG_SMBUS == 1 static void dump_spd_registers(const struct mem_controller *ctrl) { int i; diff --git a/src/northbridge/amd/amdk8/raminit_f.c b/src/northbridge/amd/amdk8/raminit_f.c index a7feb61bf3..aaf60a85a1 100644 --- a/src/northbridge/amd/amdk8/raminit_f.c +++ b/src/northbridge/amd/amdk8/raminit_f.c @@ -34,9 +34,7 @@ #define QRANK_DIMM_SUPPORT 0 #endif -#define RAM_TIMING_DEBUG 0 - -#if RAM_TIMING_DEBUG == 1 +#if DEBUG_RAM_SETUP #define printk_raminit printk_debug #else #define printk_raminit(fmt, arg...) diff --git a/src/northbridge/intel/e7501/raminit.c b/src/northbridge/intel/e7501/raminit.c index ad6e462377..c1866070ff 100644 --- a/src/northbridge/intel/e7501/raminit.c +++ b/src/northbridge/intel/e7501/raminit.c @@ -22,10 +22,7 @@ // Unfortunately the code seems to chew up several K of space. //#define VALIDATE_DIMM_COMPATIBILITY -// Uncomment this to enable local debugging messages -//#define DEBUG_RAM_CONFIG - -#if defined(DEBUG_RAM_CONFIG) +#if CONFIG_DEBUG_RAM_SETUP #define RAM_DEBUG_MESSAGE(x) print_debug(x) #define RAM_DEBUG_HEX32(x) print_debug_hex32(x) #define RAM_DEBUG_HEX8(x) print_debug_hex8(x) diff --git a/src/northbridge/intel/i440bx/raminit.c b/src/northbridge/intel/i440bx/raminit.c index 5c560e17de..6a7353608b 100644 --- a/src/northbridge/intel/i440bx/raminit.c +++ b/src/northbridge/intel/i440bx/raminit.c @@ -28,11 +28,8 @@ Macros and definitions. -----------------------------------------------------------------------------*/ -/* Uncomment this to enable debugging output. */ -#define DEBUG_RAM_SETUP 1 - /* Debugging macros. */ -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) diff --git a/src/northbridge/intel/i82810/raminit.c b/src/northbridge/intel/i82810/raminit.c index 570477fb81..5ad4e4be73 100644 --- a/src/northbridge/intel/i82810/raminit.c +++ b/src/northbridge/intel/i82810/raminit.c @@ -29,11 +29,8 @@ Macros and definitions. -----------------------------------------------------------------------------*/ -/* Uncomment this to enable debugging output. */ -// #define DEBUG_RAM_SETUP 1 - /* Debugging macros. */ -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) diff --git a/src/northbridge/intel/i82830/raminit.c b/src/northbridge/intel/i82830/raminit.c index 2b747158c6..9e2f3c4bf1 100644 --- a/src/northbridge/intel/i82830/raminit.c +++ b/src/northbridge/intel/i82830/raminit.c @@ -29,11 +29,8 @@ Macros and definitions. -----------------------------------------------------------------------------*/ -/* Uncomment this to enable debugging output. */ -/* #define DEBUG_RAM_SETUP 1 */ - /* Debugging macros. */ -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) diff --git a/src/northbridge/intel/i945/raminit.c b/src/northbridge/intel/i945/raminit.c index be63e7adcc..235375673d 100644 --- a/src/northbridge/intel/i945/raminit.c +++ b/src/northbridge/intel/i945/raminit.c @@ -24,10 +24,8 @@ #include "raminit.h" #include "i945.h" -#define DEBUG_RAM_SETUP - /* Debugging macros. */ -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP #define PRINTK_DEBUG(x...) printk_debug(x) #else #define PRINTK_DEBUG(x...) @@ -73,7 +71,7 @@ static void ram_read32(u32 offset) read32(offset); } -#ifdef DEBUG_RAM_SETUP +#if CONFIG_DEBUG_RAM_SETUP static void sdram_dump_mchbar_registers(void) { int i; diff --git a/src/northbridge/via/cn700/raminit.c b/src/northbridge/via/cn700/raminit.c index 715305268e..bddb4448fe 100644 --- a/src/northbridge/via/cn700/raminit.c +++ b/src/northbridge/via/cn700/raminit.c @@ -25,9 +25,7 @@ #include <delay.h> #include "cn700.h" -// #define DEBUG_RAM_SETUP 1 - -#ifdef DEBUG_RAM_SETUP +#ifdef CONFIG_DEBUG_RAM_SETUP #define PRINT_DEBUG_MEM(x) print_debug(x) #define PRINT_DEBUG_MEM_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG_MEM_HEX16(x) print_debug_hex16(x) @@ -51,12 +49,6 @@ static void do_ram_command(device_t dev, u8 command) reg &= 0xf8; /* Clear bits 2-0. */ reg |= command; pci_write_config8(dev, DRAM_MISC_CTL, reg); - - PRINT_DEBUG_MEM(" Sending RAM command 0x"); - PRINT_DEBUG_MEM_HEX8(reg); - PRINT_DEBUG_MEM(" to 0x"); - PRINT_DEBUG_MEM_HEX32(0 + addr_offset); - PRINT_DEBUG_MEM("\r\n"); } /** diff --git a/src/northbridge/via/cx700/cx700_early_smbus.c b/src/northbridge/via/cx700/cx700_early_smbus.c index ed79744db4..ccee3b4633 100644 --- a/src/northbridge/via/cx700/cx700_early_smbus.c +++ b/src/northbridge/via/cx700/cx700_early_smbus.c @@ -48,10 +48,7 @@ #define SMBUS_DELAY() outb(0x80, 0x80) /* Debugging macros. */ - -// #define DEBUG_SMBUS 1 - -#ifdef DEBUG_SMBUS +#if CONFIG_DEBUG_SMBUS #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) #else @@ -102,7 +99,7 @@ static void smbus_wait_until_ready(void) SMBUS_DELAY(); ++loops; } -#ifdef DEBUG_SMBUS +#if CONFIG_DEBUG_SMBUS /* Some systems seem to have a flakey SMBus. No need to spew a lot of * errors on those, once we know that SMBus access is principally * working. @@ -234,7 +231,7 @@ static void enable_smbus(void) } /* Debugging Function */ -#ifdef DEBUG_SMBUS +#ifdef CONFIG_DEBUG_SMBUS static void dump_spd_data(const struct mem_controller *ctrl) { int dimm, offset, regs; diff --git a/src/northbridge/via/cx700/raminit.c b/src/northbridge/via/cx700/raminit.c index ff21e537ca..e0277f29bb 100644 --- a/src/northbridge/via/cx700/raminit.c +++ b/src/northbridge/via/cx700/raminit.c @@ -24,10 +24,8 @@ #include <delay.h> #include "cx700_registers.h" -// #define DEBUG_RAM_SETUP 1 - /* Debugging macros. */ -#if defined(DEBUG_RAM_SETUP) +#if CONFIG_DEBUG_RAM_SETUP #define PRINTK_DEBUG(x...) printk_debug(x) #else #define PRINTK_DEBUG(x...) diff --git a/src/northbridge/via/vx800/raminit.c b/src/northbridge/via/vx800/raminit.c index ae9777e42c..394cfaeaf9 100644 --- a/src/northbridge/via/vx800/raminit.c +++ b/src/northbridge/via/vx800/raminit.c @@ -21,9 +21,7 @@ #include <sdram_mode.h> #include <delay.h> -#define DEBUG_RAM_SETUP 1 - -#ifdef DEBUG_RAM_SETUP +#if CONFIG_DEBUG_RAM_SETUP #define PRINT_DEBUG_MEM(x) print_debug(x) #define PRINT_DEBUG_MEM_HEX8(x) print_debug_hex8(x) #define PRINT_DEBUG_MEM_HEX16(x) print_debug_hex16(x) diff --git a/src/northbridge/via/vx800/vx800_early_smbus.c b/src/northbridge/via/vx800/vx800_early_smbus.c index 6fda8b0e0a..9beb9cf130 100644 --- a/src/northbridge/via/vx800/vx800_early_smbus.c +++ b/src/northbridge/via/vx800/vx800_early_smbus.c @@ -49,11 +49,7 @@ #define SMBUS_DELAY() outb(0x80, 0x80) -/* Debugging macros. Only necessary if something isn't working right */ - -#define DEBUG_SMBUS 1 - -#ifdef DEBUG_SMBUS +#ifdef CONFIG_DEBUG_SMBUS #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) #else @@ -289,7 +285,7 @@ void smbus_fixup(const struct mem_controller *ctrl) } /* Debugging Function */ -#ifdef DEBUG_SMBUS +#if CONFIG_DEBUG_SMBUS static void dump_spd_data(void) { int dimm, offset, regs; diff --git a/src/southbridge/intel/i82801gx/i82801gx_smihandler.c b/src/southbridge/intel/i82801gx/i82801gx_smihandler.c index 2717dac2f8..38e3304374 100644 --- a/src/southbridge/intel/i82801gx/i82801gx_smihandler.c +++ b/src/southbridge/intel/i82801gx/i82801gx_smihandler.c @@ -28,8 +28,6 @@ #include <device/pci_def.h> #include "i82801gx.h" -#define DEBUG_SMI - #define APM_CNT 0xb2 #define CST_CONTROL 0x85 #define PST_CONTROL 0x80 diff --git a/src/southbridge/via/vt8237r/vt8237r.h b/src/southbridge/via/vt8237r/vt8237r.h index d451ee3aca..780876ce38 100644 --- a/src/southbridge/via/vt8237r/vt8237r.h +++ b/src/southbridge/via/vt8237r/vt8237r.h @@ -65,7 +65,7 @@ #define I2C_TRANS_CMD 0x40 #define CLOCK_SLAVE_ADDRESS 0x69 -#if DEBUG_SMBUS == 1 +#if CONFIG_DEBUG_SMBUS #define PRINT_DEBUG(x) print_debug(x) #define PRINT_DEBUG_HEX16(x) print_debug_hex16(x) #else diff --git a/util/x86emu/include/x86emu/fpu_regs.h b/util/x86emu/include/x86emu/fpu_regs.h index 56e9a04d75..7c7df8562b 100644 --- a/util/x86emu/include/x86emu/fpu_regs.h +++ b/util/x86emu/include/x86emu/fpu_regs.h @@ -102,7 +102,7 @@ struct x86_fpu_registers { #endif /* X86_FPU_SUPPORT */ -#ifdef DEBUG +#if CONFIG_X86EMU_DEBUG # define DECODE_PRINTINSTR32(t,mod,rh,rl) \ DECODE_PRINTF(t[(mod<<3)+(rh)]); # define DECODE_PRINTINSTR256(t,mod,rh,rl) \ diff --git a/util/x86emu/include/x86emu/regs.h b/util/x86emu/include/x86emu/regs.h index df5c6b2d90..516b2ea836 100644 --- a/util/x86emu/include/x86emu/regs.h +++ b/util/x86emu/include/x86emu/regs.h @@ -279,7 +279,7 @@ typedef struct { u32 mode; volatile int intr; /* mask of pending interrupts */ volatile int debug; -#ifdef DEBUG +#if CONFIG_X86EMU_DEBUG int check; u16 saved_ip; u16 saved_cs; @@ -365,13 +365,6 @@ extern X86EMU_sysEnv _X86EMU_env; #define X86_CH M.x86.R_CH #define X86_DH M.x86.R_DH - -/*-------------------------- Function Prototypes --------------------------*/ - -/* Function to log information at runtime */ - -//void printk(const char *fmt, ...); - #ifdef __cplusplus } /* End of "C" linkage for C++ */ #endif diff --git a/util/x86emu/include/x86emu/x86emu.h b/util/x86emu/include/x86emu/x86emu.h index 22e08a9542..493e494927 100644 --- a/util/x86emu/include/x86emu/x86emu.h +++ b/util/x86emu/include/x86emu/x86emu.h @@ -42,27 +42,15 @@ #ifndef __X86EMU_X86EMU_H #define __X86EMU_X86EMU_H -/* FIXME: redefine printk for the moment */ #include <stddef.h> #include <console/console.h> -#undef printk -#define printk(x...) do_printk(BIOS_DEBUG, x) -#if defined(CONFIG_YABEL_DEBUG_FLAGS) && (CONFIG_YABEL_DEBUG_FLAGS != 0) +#if CONFIG_X86EMU_DEBUG #define DEBUG -#else -#undef DEBUG #endif -#ifdef SCITECH -#include "scitech.h" -#define X86API _ASMAPI -#define X86APIP _ASMAPIP -typedef int X86EMU_pioAddr; -#else #include "types.h" #define X86API #define X86APIP * -#endif #include "regs.h" /*---------------------- Macros and type definitions ----------------------*/ @@ -166,9 +154,9 @@ void X86EMU_setMemBase(void *base, size_t size); void X86EMU_exec(void); void X86EMU_halt_sys(void); -#ifdef DEBUG +#if CONFIG_X86EMU_DEBUG #define HALT_SYS() \ - printk("halt_sys: in %s\n", __func__); \ + printf("halt_sys: in %s\n", __func__); \ X86EMU_halt_sys(); #else #define HALT_SYS() X86EMU_halt_sys() diff --git a/util/x86emu/x86.c b/util/x86emu/x86.c index 5644648b84..0690b71681 100644 --- a/util/x86emu/x86.c +++ b/util/x86emu/x86.c @@ -23,8 +23,6 @@ #include <arch/io.h> #include <arch/registers.h> #include <console/console.h> -#define printk(x...) do_printk(x) - #include <arch/interrupt.h> #define REALMODE_BASE ((void *)0x600) diff --git a/util/x86emu/x86_interrupts.c b/util/x86emu/x86_interrupts.c index a21a0ab988..95964f89f2 100644 --- a/util/x86emu/x86_interrupts.c +++ b/util/x86emu/x86_interrupts.c @@ -26,7 +26,6 @@ #include <console/console.h> #include <arch/io.h> #include <arch/registers.h> -#define printk(x...) do_printk(x) enum { PCIBIOS_CHECK = 0xb101, diff --git a/util/x86emu/x86emu/debug.c b/util/x86emu/x86emu/debug.c index 026c03fddd..b3f4b6ebfb 100644 --- a/util/x86emu/x86emu/debug.c +++ b/util/x86emu/x86emu/debug.c @@ -38,7 +38,6 @@ ****************************************************************************/ #include "x86emui.h" -// #include <stdarg.h> /*----------------------------- Implementation ----------------------------*/ @@ -59,7 +58,7 @@ void X86EMU_trace_regs (void) } } if (DEBUG_DECODE() && ! DEBUG_DECODE_NOPRINT()) { - printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); + printf("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip); print_decoded_instruction(); } @@ -78,7 +77,7 @@ void x86emu_just_disassemble (void) * This routine called if the flag DEBUG_DISASSEMBLE is set kind * of a hack! */ - printk("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); + printf("%04x:%04x ",M.x86.saved_cs, M.x86.saved_ip); print_encoded_bytes( M.x86.saved_cs, M.x86.saved_ip); print_decoded_instruction(); } @@ -162,13 +161,13 @@ void x86emu_inc_decoded_inst_len (int x) M.x86.enc_pos += x; } -void x86emu_decode_printf (char *x) +void x86emu_decode_printf (const char *x) { sprintf(M.x86.decoded_buf+M.x86.enc_str_pos,"%s",x); M.x86.enc_str_pos += strlen(x); } -void x86emu_decode_printf2 (char *x, int y) +void x86emu_decode_printf2 (const char *x, int y) { char temp[100]; sprintf(temp,x,y); @@ -189,12 +188,12 @@ static void print_encoded_bytes (u16 s, u16 o) for (i=0; i< M.x86.enc_pos; i++) { sprintf(buf1+2*i,"%02x", fetch_data_byte_abs(s,o+i)); } - printk("%-20s ",buf1); + printf("%-20s ",buf1); } static void print_decoded_instruction (void) { - printk("%s", M.x86.decoded_buf); + printf("%s", M.x86.decoded_buf); } void x86emu_print_int_vect (u16 iv) @@ -204,7 +203,7 @@ void x86emu_print_int_vect (u16 iv) if (iv > 256) return; seg = fetch_data_word_abs(0,iv*4); off = fetch_data_word_abs(0,iv*4+2); - printk("%04x:%04x ", seg, off); + printf("%04x:%04x ", seg, off); } void X86EMU_dump_memory (u16 seg, u16 off, u32 amt) @@ -216,12 +215,12 @@ void X86EMU_dump_memory (u16 seg, u16 off, u32 amt) current = start; while (end <= off + amt) { - printk("%04x:%04x ", seg, start); + printf("%04x:%04x ", seg, start); for (i=start; i< off; i++) - printk(" "); + printf(" "); for ( ; i< end; i++) - printk("%02x ", fetch_data_byte_abs(seg,i)); - printk("\n"); + printf("%02x ", fetch_data_byte_abs(seg,i)); + printf("\n"); start = end; end = start + 16; } @@ -256,7 +255,7 @@ void x86emu_single_step (void) done=0; offset = M.x86.saved_ip; while (!done) { - printk("-"); + printf("-"); p = fgets(s, 1023, stdin); cmd = parse_line(s, ps, &ntok); switch(cmd) { @@ -310,7 +309,7 @@ void x86emu_single_step (void) return; case 'P': noDecode = (noDecode)?0:1; - printk("Toggled decoding to %s\n",(noDecode)?"FALSE":"TRUE"); + printf("Toggled decoding to %s\n",(noDecode)?"FALSE":"TRUE"); break; case 't': case 0: @@ -368,68 +367,68 @@ int parse_line (char *s, int *ps, int *n) void x86emu_dump_regs (void) { - printk("\tAX=%04x ", M.x86.R_AX ); - printk("BX=%04x ", M.x86.R_BX ); - printk("CX=%04x ", M.x86.R_CX ); - printk("DX=%04x ", M.x86.R_DX ); - printk("SP=%04x ", M.x86.R_SP ); - printk("BP=%04x ", M.x86.R_BP ); - printk("SI=%04x ", M.x86.R_SI ); - printk("DI=%04x\n", M.x86.R_DI ); - printk("\tDS=%04x ", M.x86.R_DS ); - printk("ES=%04x ", M.x86.R_ES ); - printk("SS=%04x ", M.x86.R_SS ); - printk("CS=%04x ", M.x86.R_CS ); - printk("IP=%04x ", M.x86.R_IP ); - if (ACCESS_FLAG(F_OF)) printk("OV "); /* CHECKED... */ - else printk("NV "); - if (ACCESS_FLAG(F_DF)) printk("DN "); - else printk("UP "); - if (ACCESS_FLAG(F_IF)) printk("EI "); - else printk("DI "); - if (ACCESS_FLAG(F_SF)) printk("NG "); - else printk("PL "); - if (ACCESS_FLAG(F_ZF)) printk("ZR "); - else printk("NZ "); - if (ACCESS_FLAG(F_AF)) printk("AC "); - else printk("NA "); - if (ACCESS_FLAG(F_PF)) printk("PE "); - else printk("PO "); - if (ACCESS_FLAG(F_CF)) printk("CY "); - else printk("NC "); - printk("\n"); + printf("\tAX=%04x ", M.x86.R_AX ); + printf("BX=%04x ", M.x86.R_BX ); + printf("CX=%04x ", M.x86.R_CX ); + printf("DX=%04x ", M.x86.R_DX ); + printf("SP=%04x ", M.x86.R_SP ); + printf("BP=%04x ", M.x86.R_BP ); + printf("SI=%04x ", M.x86.R_SI ); + printf("DI=%04x\n", M.x86.R_DI ); + printf("\tDS=%04x ", M.x86.R_DS ); + printf("ES=%04x ", M.x86.R_ES ); + printf("SS=%04x ", M.x86.R_SS ); + printf("CS=%04x ", M.x86.R_CS ); + printf("IP=%04x ", M.x86.R_IP ); + if (ACCESS_FLAG(F_OF)) printf("OV "); /* CHECKED... */ + else printf("NV "); + if (ACCESS_FLAG(F_DF)) printf("DN "); + else printf("UP "); + if (ACCESS_FLAG(F_IF)) printf("EI "); + else printf("DI "); + if (ACCESS_FLAG(F_SF)) printf("NG "); + else printf("PL "); + if (ACCESS_FLAG(F_ZF)) printf("ZR "); + else printf("NZ "); + if (ACCESS_FLAG(F_AF)) printf("AC "); + else printf("NA "); + if (ACCESS_FLAG(F_PF)) printf("PE "); + else printf("PO "); + if (ACCESS_FLAG(F_CF)) printf("CY "); + else printf("NC "); + printf("\n"); } void x86emu_dump_xregs (void) { - printk("\tEAX=%08x ", M.x86.R_EAX ); - printk("EBX=%08x ", M.x86.R_EBX ); - printk("ECX=%08x ", M.x86.R_ECX ); - printk("EDX=%08x \n", M.x86.R_EDX ); - printk("\tESP=%08x ", M.x86.R_ESP ); - printk("EBP=%08x ", M.x86.R_EBP ); - printk("ESI=%08x ", M.x86.R_ESI ); - printk("EDI=%08x\n", M.x86.R_EDI ); - printk("\tDS=%04x ", M.x86.R_DS ); - printk("ES=%04x ", M.x86.R_ES ); - printk("SS=%04x ", M.x86.R_SS ); - printk("CS=%04x ", M.x86.R_CS ); - printk("EIP=%08x\n\t", M.x86.R_EIP ); - if (ACCESS_FLAG(F_OF)) printk("OV "); /* CHECKED... */ - else printk("NV "); - if (ACCESS_FLAG(F_DF)) printk("DN "); - else printk("UP "); - if (ACCESS_FLAG(F_IF)) printk("EI "); - else printk("DI "); - if (ACCESS_FLAG(F_SF)) printk("NG "); - else printk("PL "); - if (ACCESS_FLAG(F_ZF)) printk("ZR "); - else printk("NZ "); - if (ACCESS_FLAG(F_AF)) printk("AC "); - else printk("NA "); - if (ACCESS_FLAG(F_PF)) printk("PE "); - else printk("PO "); - if (ACCESS_FLAG(F_CF)) printk("CY "); - else printk("NC "); - printk("\n"); + printf("\tEAX=%08x ", M.x86.R_EAX ); + printf("EBX=%08x ", M.x86.R_EBX ); + printf("ECX=%08x ", M.x86.R_ECX ); + printf("EDX=%08x \n", M.x86.R_EDX ); + printf("\tESP=%08x ", M.x86.R_ESP ); + printf("EBP=%08x ", M.x86.R_EBP ); + printf("ESI=%08x ", M.x86.R_ESI ); + printf("EDI=%08x\n", M.x86.R_EDI ); + printf("\tDS=%04x ", M.x86.R_DS ); + printf("ES=%04x ", M.x86.R_ES ); + printf("SS=%04x ", M.x86.R_SS ); + printf("CS=%04x ", M.x86.R_CS ); + printf("EIP=%08x\n\t", M.x86.R_EIP ); + if (ACCESS_FLAG(F_OF)) printf("OV "); /* CHECKED... */ + else printf("NV "); + if (ACCESS_FLAG(F_DF)) printf("DN "); + else printf("UP "); + if (ACCESS_FLAG(F_IF)) printf("EI "); + else printf("DI "); + if (ACCESS_FLAG(F_SF)) printf("NG "); + else printf("PL "); + if (ACCESS_FLAG(F_ZF)) printf("ZR "); + else printf("NZ "); + if (ACCESS_FLAG(F_AF)) printf("AC "); + else printf("NA "); + if (ACCESS_FLAG(F_PF)) printf("PE "); + else printf("PO "); + if (ACCESS_FLAG(F_CF)) printf("CY "); + else printf("NC "); + printf("\n"); } diff --git a/util/x86emu/x86emu/debug.h b/util/x86emu/x86emu/debug.h index f6bab3cf78..7aac995cc3 100644 --- a/util/x86emu/x86emu/debug.h +++ b/util/x86emu/x86emu/debug.h @@ -40,10 +40,11 @@ #ifndef __X86EMU_DEBUG_H #define __X86EMU_DEBUG_H -//#define DEBUG 0 -//#undef DEBUG /*---------------------- Macros and type definitions ----------------------*/ +/* printf is not available in coreboot... use printk */ +#define printf(x...) printk(BIOS_DEBUG, x) + /* checks to be enabled for "runtime" */ #define CHECK_IP_FETCH_F 0x1 @@ -172,17 +173,17 @@ if (DEBUG_TRACECALLREGS()) \ x86emu_dump_regs(); \ if (DEBUG_TRACECALL()) \ - printk("%04x:%04x: CALL %s%04x:%04x\n", u , v, s, w, x); + printf("%04x:%04x: CALL %s%04x:%04x\n", u , v, s, w, x); # define RETURN_TRACE(u,v,w,x,s) \ if (DEBUG_TRACECALLREGS()) \ x86emu_dump_regs(); \ if (DEBUG_TRACECALL()) \ - printk("%04x:%04x: RET %s %04x:%04x\n",u,v,s,w,x); + printf("%04x:%04x: RET %s %04x:%04x\n",u,v,s,w,x); # define JMP_TRACE(u,v,w,x,s) \ if (DEBUG_TRACEJMPREGS()) \ x86emu_dump_regs(); \ if (DEBUG_TRACEJMP()) \ - printk("%04x:%04x: JMP %s%04x:%04x\n", u , v, s, w, x); + printf("%04x:%04x: JMP %s%04x:%04x\n", u , v, s, w, x); #else # define CALL_TRACE(u,v,w,x,s) # define RETURN_TRACE(u,v,w,x,s) @@ -201,20 +202,22 @@ extern "C" { /* Use "C" linkage when in C++ mode */ #endif -extern void x86emu_inc_decoded_inst_len (int x); -extern void x86emu_decode_printf (char *x); -extern void x86emu_decode_printf2 (char *x, int y); -extern void x86emu_just_disassemble (void); -extern void x86emu_single_step (void); -extern void x86emu_end_instr (void); -extern void x86emu_dump_regs (void); -extern void x86emu_dump_xregs (void); -extern void x86emu_print_int_vect (u16 iv); -extern void x86emu_instrument_instruction (void); -extern void x86emu_check_ip_access (void); -extern void x86emu_check_sp_access (void); -extern void x86emu_check_mem_access (u32 p); -extern void x86emu_check_data_access (uint s, uint o); +void x86emu_inc_decoded_inst_len (int x); +void x86emu_decode_printf (const char *x); +void x86emu_decode_printf2 (const char *x, int y); +void x86emu_just_disassemble (void); +void x86emu_single_step (void); +void x86emu_end_instr (void); +void x86emu_dump_regs (void); +void x86emu_dump_xregs (void); +void x86emu_print_int_vect (u16 iv); +void x86emu_instrument_instruction (void); +void x86emu_check_ip_access (void); +void x86emu_check_sp_access (void); +void x86emu_check_mem_access (u32 p); +void x86emu_check_data_access (uint s, uint o); + +void disassemble_forward (u16 seg, u16 off, int n); #ifdef __cplusplus } /* End of "C" linkage for C++ */ diff --git a/util/x86emu/x86emu/decode.c b/util/x86emu/x86emu/decode.c index 2cd62348d7..3d2ba23566 100644 --- a/util/x86emu/x86emu/decode.c +++ b/util/x86emu/x86emu/decode.c @@ -77,7 +77,7 @@ next instruction. void x86emu_intr_raise( u8 intrnum) { - printk("%s, rasing execption %x\n", __func__, intrnum); + printf("%s, raising exeception %x\n", __func__, intrnum); x86emu_dump_regs(); M.x86.intno = intrnum; M.x86.intr |= INTR_SYNCH; @@ -105,12 +105,12 @@ DB( if (CHECK_IP_FETCH()) if (M.x86.intr) { if (M.x86.intr & INTR_HALTED) { DB( if (M.x86.R_SP != 0) { - printk("halted\n"); + printf("halted\n"); X86EMU_trace_regs(); } else { if (M.x86.debug) - printk("Service completed successfully\n"); + printf("Service completed successfully\n"); }) return; } @@ -286,7 +286,7 @@ _INLINE u32 get_data_segment(void) return M.x86.R_SS; default: #ifdef DEBUG - printk("error: should not happen: multiple overrides.\n"); + printf("error: should not happen: multiple overrides.\n"); #endif HALT_SYS(); return 0; diff --git a/util/x86emu/x86emu/fpu.c b/util/x86emu/x86emu/fpu.c index 85f55c8854..daa2ffa75a 100644 --- a/util/x86emu/x86emu/fpu.c +++ b/util/x86emu/x86emu/fpu.c @@ -52,7 +52,7 @@ void x86emuOp_esc_coprocess_d8(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -static char *x86emu_fpu_op_d9_tab[] = { +static const char *x86emu_fpu_op_d9_tab[] = { "FLD\tDWORD PTR ", "ESC_D9\t", "FST\tDWORD PTR ", "FSTP\tDWORD PTR ", "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t", @@ -63,7 +63,7 @@ static char *x86emu_fpu_op_d9_tab[] = { "FLDENV\t", "FLDCW\t", "FSTENV\t", "FSTCW\t", }; -static char *x86emu_fpu_op_d9_tab1[] = { +static const char *x86emu_fpu_op_d9_tab1[] = { "FLD\t", "FLD\t", "FLD\t", "FLD\t", "FLD\t", "FLD\t", "FLD\t", "FLD\t", @@ -296,7 +296,7 @@ void x86emuOp_esc_coprocess_d9(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -char *x86emu_fpu_op_da_tab[] = { +static const char *x86emu_fpu_op_da_tab[] = { "FIADD\tDWORD PTR ", "FIMUL\tDWORD PTR ", "FICOM\tDWORD PTR ", "FICOMP\tDWORD PTR ", "FISUB\tDWORD PTR ", "FISUBR\tDWORD PTR ", "FIDIV\tDWORD PTR ", @@ -386,7 +386,7 @@ void x86emuOp_esc_coprocess_da(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -char *x86emu_fpu_op_db_tab[] = { +static const char *x86emu_fpu_op_db_tab[] = { "FILD\tDWORD PTR ", "ESC_DB\t19", "FIST\tDWORD PTR ", "FISTP\tDWORD PTR ", "ESC_DB\t1C", "FLD\tTBYTE PTR ", "ESC_DB\t1E", "FSTP\tTBYTE PTR ", @@ -505,7 +505,7 @@ void x86emuOp_esc_coprocess_db(u8 X86EMU_UNUSED(op1)) } #ifdef DEBUG -char *x86emu_fpu_op_dc_tab[] = { +static const char *x86emu_fpu_op_dc_tab[] = { "FADD\tQWORD PTR ", "FMUL\tQWORD PTR ", "FCOM\tQWORD PTR ", "FCOMP\tQWORD PTR ", "FSUB\tQWORD PTR ", "FSUBR\tQWORD PTR ", "FDIV\tQWORD PTR ", @@ -620,7 +620,7 @@ void x86emuOp_esc_coprocess_dc(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -static char *x86emu_fpu_op_dd_tab[] = { +static const char *x86emu_fpu_op_dd_tab[] = { "FLD\tQWORD PTR ", "ESC_DD\t29,", "FST\tQWORD PTR ", "FSTP\tQWORD PTR ", "FRSTOR\t", "ESC_DD\t2D,", "FSAVE\t", "FSTSW\t", @@ -720,7 +720,7 @@ void x86emuOp_esc_coprocess_dd(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -static char *x86emu_fpu_op_de_tab[] = +static const char *x86emu_fpu_op_de_tab[] = { "FIADD\tWORD PTR ", "FIMUL\tWORD PTR ", "FICOM\tWORD PTR ", "FICOMP\tWORD PTR ", @@ -839,7 +839,7 @@ void x86emuOp_esc_coprocess_de(u8 X86EMU_UNUSED(op1)) #ifdef DEBUG -static char *x86emu_fpu_op_df_tab[] = { +static const char *x86emu_fpu_op_df_tab[] = { /* mod == 00 */ "FILD\tWORD PTR ", "ESC_DF\t39\n", "FIST\tWORD PTR ", "FISTP\tWORD PTR ", "FBLD\tTBYTE PTR ", "FILD\tQWORD PTR ", "FBSTP\tTBYTE PTR ", diff --git a/util/x86emu/x86emu/ops.c b/util/x86emu/x86emu/ops.c index fd7ad32d22..c66da95760 100644 --- a/util/x86emu/x86emu/ops.c +++ b/util/x86emu/x86emu/ops.c @@ -77,7 +77,7 @@ /* constant arrays to do several instructions in just one function */ #ifdef DEBUG -static char *x86emu_GenOpName[8] = { +static const char *x86emu_GenOpName[8] = { "ADD", "OR", "ADC", "SBB", "AND", "SUB", "XOR", "CMP"}; #endif @@ -159,7 +159,7 @@ static u32 (*opcD1_long_operation[])(u32 s, u8 d) = #ifdef DEBUG -static char *opF6_names[8] = +static const char *opF6_names[8] = { "TEST\t", "", "NOT\t", "NEG\t", "MUL\t", "IMUL\t", "DIV\t", "IDIV\t" }; #endif @@ -178,7 +178,7 @@ static void x86emuOp_illegal_op( if (M.x86.R_SP != 0) { DECODE_PRINTF("ILLEGAL X86 OPCODE\n"); TRACE_REGS(); - DB( printk("%04x:%04x: %02X ILLEGAL X86 OPCODE!\n", + DB( printf("%04x:%04x: %02X ILLEGAL X86 OPCODE!\n", M.x86.R_CS, M.x86.R_IP-1,op1)); HALT_SYS(); } diff --git a/util/x86emu/x86emu/ops2.c b/util/x86emu/x86emu/ops2.c index a749b59525..f5cb6498b1 100644 --- a/util/x86emu/x86emu/ops2.c +++ b/util/x86emu/x86emu/ops2.c @@ -54,7 +54,7 @@ static void x86emuOp2_illegal_op(u8 op2) START_OF_INSTR(); DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n"); TRACE_REGS(); - printk("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n", + printf("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n", M.x86.R_CS, M.x86.R_IP-2, op2); HALT_SYS(); END_OF_INSTR(); @@ -105,7 +105,7 @@ static void x86emuOp2_opc_01(u8 op2) default: DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE IN 0F 01\n"); TRACE_REGS(); - printk("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n", + printf("%04x:%04x: %02X ILLEGAL EXTENDED X86 OPCODE!\n", M.x86.R_CS, M.x86.R_IP-2, op2); HALT_SYS(); break; @@ -1272,7 +1272,7 @@ static void x86emuOp2_btX_I(u8 X86EMU_UNUSED(op2)) default: DECODE_PRINTF("ILLEGAL EXTENDED X86 OPCODE\n"); TRACE_REGS(); - printk("%04x:%04x: %02X%02X ILLEGAL EXTENDED X86 OPCODE EXTENSION!\n", + printf("%04x:%04x: %02X%02X ILLEGAL EXTENDED X86 OPCODE EXTENSION!\n", M.x86.R_CS, M.x86.R_IP-3,op2, (mod<<6)|(rh<<3)|rl); HALT_SYS(); } diff --git a/util/x86emu/x86emu/sys.c b/util/x86emu/x86emu/sys.c index b4bed43ba4..957e0ca63b 100644 --- a/util/x86emu/x86emu/sys.c +++ b/util/x86emu/x86emu/sys.c @@ -41,15 +41,11 @@ ****************************************************************************/ /* $XFree86: xc/extras/x86emu/src/x86emu/sys.c,v 1.5 2000/08/23 22:10:01 tsi Exp $ */ +#include <arch/io.h> #include <x86emu/x86emu.h> #include <x86emu/regs.h> #include "debug.h" #include "prim_ops.h" -#if 1 /* Coreboot needs to map prinkf to printk. */ -#include "arch/io.h" -#else -#include <sys/io.h> -#endif #ifdef IN_MODULE #include "xf86_ansic.h" @@ -69,11 +65,11 @@ static u8 *mem_ptr(u32 addr, int size) u8 *retaddr = 0; if (addr > M.mem_size - size) { - DB(printk("mem_ptr: address %#x out of range!\n", addr);) + DB(printf("mem_ptr: address %#x out of range!\n", addr);) HALT_SYS(); } if (addr < 0x200) { - //printk("%x:%x updating int vector 0x%x\n", + //printf("%x:%x updating int vector 0x%x\n", // M.x86.R_CS, M.x86.R_IP, addr >> 2); } retaddr = (u8 *) (M.mem_base + addr); @@ -100,7 +96,7 @@ u8 X86API rdb(u32 addr) val = *ptr; DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 1 -> %#x\n", addr, val);) + printf("%#08x 1 -> %#x\n", addr, val);) return val; } @@ -123,7 +119,7 @@ u16 X86API rdw(u32 addr) val = *(u16 *) (ptr); DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 2 -> %#x\n", addr, val);) + printf("%#08x 2 -> %#x\n", addr, val);) return val; } @@ -145,7 +141,7 @@ u32 X86API rdl(u32 addr) val = *(u32 *) (ptr); DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 4 -> %#x\n", addr, val);) + printf("%#08x 4 -> %#x\n", addr, val);) return val; } @@ -165,7 +161,7 @@ void X86API wrb(u32 addr, u8 val) *(u8 *) (ptr) = val; DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 1 <- %#x\n", addr, val);) + printf("%#08x 1 <- %#x\n", addr, val);) } /**************************************************************************** @@ -184,7 +180,7 @@ void X86API wrw(u32 addr, u16 val) *(u16 *) (ptr) = val; DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 2 <- %#x\n", addr, val);) + printf("%#08x 2 <- %#x\n", addr, val);) } /**************************************************************************** @@ -203,7 +199,7 @@ void X86API wrl(u32 addr, u32 val) *(u32 *) (ptr) = val; DB(if (DEBUG_MEM_TRACE()) - printk("%#08x 4 <- %#x\n", addr, val);) + printf("%#08x 4 <- %#x\n", addr, val);) } @@ -219,7 +215,7 @@ Default PIO byte read function. Doesn't perform real inb. static u8 X86API p_inb(X86EMU_pioAddr addr) { DB(if (DEBUG_IO_TRACE()) - printk("inb %#04x \n", addr);) + printf("inb %#04x \n", addr);) return inb(addr); } @@ -234,7 +230,7 @@ Default PIO word read function. Doesn't perform real inw. static u16 X86API p_inw(X86EMU_pioAddr addr) { DB(if (DEBUG_IO_TRACE()) - printk("inw %#04x \n", addr);) + printf("inw %#04x \n", addr);) return inw(addr); } @@ -249,7 +245,7 @@ Default PIO long read function. Doesn't perform real inl. static u32 X86API p_inl(X86EMU_pioAddr addr) { DB(if (DEBUG_IO_TRACE()) - printk("inl %#04x \n", addr);) + printf("inl %#04x \n", addr);) return inl(addr); } @@ -263,7 +259,7 @@ Default PIO byte write function. Doesn't perform real outb. static void X86API p_outb(X86EMU_pioAddr addr, u8 val) { DB(if (DEBUG_IO_TRACE()) - printk("outb %#02x -> %#04x \n", val, addr);) + printf("outb %#02x -> %#04x \n", val, addr);) outb(val, addr); return; } @@ -278,7 +274,7 @@ Default PIO word write function. Doesn't perform real outw. static void X86API p_outw(X86EMU_pioAddr addr, u16 val) { DB(if (DEBUG_IO_TRACE()) - printk("outw %#04x -> %#04x \n", val, addr);) + printf("outw %#04x -> %#04x \n", val, addr);) outw(val, addr); return; } @@ -293,7 +289,7 @@ Default PIO ;ong write function. Doesn't perform real outl. static void X86API p_outl(X86EMU_pioAddr addr, u32 val) { DB(if (DEBUG_IO_TRACE()) - printk("outl %#08x -> %#04x \n", val, addr);) + printf("outl %#08x -> %#04x \n", val, addr);) outl(val, addr); return; diff --git a/util/x86emu/x86emu/x86emui.h b/util/x86emu/x86emu/x86emui.h index ff69d50565..d693e335f4 100644 --- a/util/x86emu/x86emu/x86emui.h +++ b/util/x86emu/x86emu/x86emui.h @@ -74,8 +74,6 @@ #ifdef IN_MODULE #include <xf86_ansic.h> #else -//#include <stdio.h> -//#include <stdlib.h> #include <string.h> #endif /*--------------------------- Inline Functions ----------------------------*/ diff --git a/util/x86emu/yabel/biosemu.c b/util/x86emu/yabel/biosemu.c index 09a98b50b6..294d81f279 100644 --- a/util/x86emu/yabel/biosemu.c +++ b/util/x86emu/yabel/biosemu.c @@ -1,6 +1,7 @@ /****************************************************************************** * Copyright (c) 2004, 2008 IBM Corporation * Copyright (c) 2008, 2009 Pattrick Hueper <phueper@hueper.net> + * Copyright (c) 2010 coresystems GmbH * All rights reserved. * This program and the accompanying materials * are made available under the terms of the BSD License @@ -12,7 +13,6 @@ *****************************************************************************/ #include <string.h> - #include <types.h> #include "debug.h" @@ -28,9 +28,8 @@ #include "device.h" #include "pmm.h" -#include "compat/rtas.h" - #include <device/device.h> +#include "compat/rtas.h" static X86EMU_memFuncs my_mem_funcs = { my_rdb, my_rdw, my_rdl, @@ -57,13 +56,42 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad { u8 *rom_image; int i = 0; -#ifdef DEBUG - debug_flags = 0;//DEBUG_PRINT_INT10 | DEBUG_PNP | DEBUG_INTR | DEBUG_CHECK_VMEM_ACCESS | DEBUG_MEM | DEBUG_IO; - // | DEBUG_CHECK_VMEM_ACCESS | DEBUG_MEM | DEBUG_IO; - // | DEBUG_TRACE_X86EMU | DEBUG_JMP; +#if CONFIG_X86EMU_DEBUG + debug_flags = 0; +#if defined(CONFIG_X86EMU_DEBUG_JMP) && CONFIG_X86EMU_DEBUG_JMP + debug_flags |= DEBUG_JMP; +#endif +#if defined(CONFIG_X86EMU_DEBUG_TRACE) && CONFIG_X86EMU_DEBUG_TRACE + debug_flags |= DEBUG_TRACE_X86EMU; +#endif +#if defined(CONFIG_X86EMU_DEBUG_PNP) && CONFIG_X86EMU_DEBUG_PNP + debug_flags |= DEBUG_PNP; +#endif +#if defined(CONFIG_X86EMU_DEBUG_DISK) && CONFIG_X86EMU_DEBUG_DISK + debug_flags |= DEBUG_DISK; +#endif +#if defined(CONFIG_X86EMU_DEBUG_PMM) && CONFIG_X86EMU_DEBUG_PMM + debug_flags |= DEBUG_PMM; +#endif +#if defined(CONFIG_X86EMU_DEBUG_VBE) && CONFIG_X86EMU_DEBUG_VBE + debug_flags |= DEBUG_VBE; +#endif +#if defined(CONFIG_X86EMU_DEBUG_INT10) && CONFIG_X86EMU_DEBUG_INT10 + debug_flags |= DEBUG_PRINT_INT10; +#endif +#if defined(CONFIG_X86EMU_DEBUG_INTERRUPTS) && CONFIG_X86EMU_DEBUG_INTERRUPTS + debug_flags |= DEBUG_INTR; +#endif +#if defined(CONFIG_X86EMU_DEBUG_CHECK_VMEM_ACCESS) && CONFIG_X86EMU_DEBUG_CHECK_VMEM_ACCESS + debug_flags |= DEBUG_CHECK_VMEM_ACCESS; +#endif +#if defined(CONFIG_X86EMU_DEBUG_MEM) && CONFIG_X86EMU_DEBUG_MEM + debug_flags |= DEBUG_MEM; +#endif +#if defined(CONFIG_X86EMU_DEBUG_IO) && CONFIG_X86EMU_DEBUG_IO + debug_flags |= DEBUG_IO; +#endif - /* use CONFIG_YABEL_DEBUG_FLAGS, too... */ - debug_flags |= CONFIG_YABEL_DEBUG_FLAGS; #endif if (biosmem_size < MIN_REQUIRED_VMEM_SIZE) { printf("Error: Not enough virtual memory: %x, required: %x!\n", @@ -200,11 +228,11 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad //TODO: check for further needed EBDA data... // setup original ROM BIOS Area (F000:xxxx) - char *date = "06/11/99"; + const char *date = "06/11/99"; for (i = 0; date[i]; i++) my_wrb(0xffff5 + i, date[i]); // set up eisa ident string - char *ident = "PCI_ISA"; + const char *ident = "PCI_ISA"; for (i = 0; ident[i]; i++) my_wrb(0xfffd9 + i, ident[i]); @@ -250,14 +278,14 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad // push a HLT instruction and a pointer to it onto the stack // any return will pop the pointer and jump to the HLT, thus // exiting (more or less) cleanly - push_word(0xf4f4); //F4=HLT + push_word(0xf4f4); // F4=HLT push_word(M.x86.R_SS); push_word(M.x86.R_SP + 2); CHECK_DBG(DEBUG_TRACE_X86EMU) { X86EMU_trace_on(); +#if 0 } else { -#ifdef DEBUG M.x86.debug |= DEBUG_SAVE_IP_CS_F; M.x86.debug |= DEBUG_DECODE_F; M.x86.debug |= DEBUG_DECODE_NOPRINT_F; @@ -268,7 +296,7 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad M.x86.debug |= DEBUG_TRACEJMP_REGS_F; M.x86.debug |= DEBUG_TRACECALL_F; M.x86.debug |= DEBUG_TRACECALL_REGS_F; - } + } DEBUG_PRINTF("Executing Initialization Vector...\n"); X86EMU_exec(); @@ -278,7 +306,7 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad * some boot device status in AX (see PNP BIOS Spec Section 3.3 */ DEBUG_PRINTF_CS_IP("Option ROM Exit Status: %04x\n", M.x86.R_AX); -#ifdef DEBUG +#if defined(CONFIG_X86EMU_DEBUG) && CONFIG_X86EMU_DEBUG DEBUG_PRINTF("Exit Status Decode:\n"); if (M.x86.R_AX & 0x100) { // bit 8 DEBUG_PRINTF @@ -344,14 +372,12 @@ biosemu(u8 *biosmem, u32 biosmem_size, struct device * dev, unsigned long rom_ad && (M.x86.R_SP == STACK_START_OFFSET)) { DEBUG_PRINTF("Stack is clean, initialization successfull!\n"); } else { - DEBUG_PRINTF - ("Stack unclean, initialization probably NOT COMPLETE!!\n"); + printf("Stack unclean, initialization probably NOT COMPLETE!\n"); DEBUG_PRINTF("SS:SP = %04x:%04x, expected: %04x:%04x\n", M.x86.R_SS, M.x86.R_SP, STACK_SEGMENT, STACK_START_OFFSET); } - // TODO: according to the BIOS Boot Spec initializations may be ended using INT18h and setting // the status. // We need to implement INT18 accordingly, pseudo code is in specsbbs101.pdf page 30 diff --git a/util/x86emu/yabel/biosemu.h b/util/x86emu/yabel/biosemu.h index fb8dab2b24..09ace729ec 100644 --- a/util/x86emu/yabel/biosemu.h +++ b/util/x86emu/yabel/biosemu.h @@ -46,4 +46,7 @@ typedef int (* yabel_handleIntFunc)(void); extern yabel_handleIntFunc yabel_intFuncArray[256]; +struct device; + +u32 biosemu(u8 *biosmem, u32 biosmem_size, struct device *dev, unsigned long rom_addr); #endif diff --git a/util/x86emu/yabel/compat/functions.c b/util/x86emu/yabel/compat/functions.c index 599e82e54e..4d1f1e4fda 100644 --- a/util/x86emu/yabel/compat/functions.c +++ b/util/x86emu/yabel/compat/functions.c @@ -17,6 +17,7 @@ #include <string.h> #include <device/device.h> #include "../debug.h" +#include "../biosemu.h" #define VMEM_SIZE (1024 * 1024) /* 1 MB */ @@ -30,8 +31,6 @@ u8* vmem = (u8 *) (16*1024*1024); /* default to 16MB */ u8* vmem = NULL; #endif -u32 biosemu(u8 *biosmem, u32 biosmem_size, struct device *dev, - unsigned long rom_addr); #if CONFIG_BOOTSPLASH void vbe_set_graphics(void); #endif @@ -46,10 +45,10 @@ void run_bios(struct device * dev, unsigned long addr) #endif if (vmem != NULL) { - printf("Copying legacy memory from 0x%08x to the lower 1MB\n", vmem); - memcpy(0x00000, vmem + 0x00000, 0x400); // IVT - memcpy(0x00400, vmem + 0x00400, 0x100); // BDA - memcpy(0xc0000, vmem + 0xc0000, 0x10000); // VGA OPROM + printf("Copying legacy memory from %p to the lower 1MB\n", vmem); + memcpy((void *)0x00000, vmem + 0x00000, 0x400); // IVT + memcpy((void *)0x00400, vmem + 0x00400, 0x100); // BDA + memcpy((void *)0xc0000, vmem + 0xc0000, 0x10000); // VGA OPROM } } diff --git a/util/x86emu/yabel/debug.h b/util/x86emu/yabel/debug.h index 92e78782c3..d02930809d 100644 --- a/util/x86emu/yabel/debug.h +++ b/util/x86emu/yabel/debug.h @@ -21,21 +21,18 @@ extern void x86emu_dump_xregs(void); /* printf is not available in coreboot... use printk */ #include <console/console.h> -/* uurgs... yuck... x86emu/x86emu.h is redefining printk... we include it here - * and use its redefinition of printk - * TODO: FIX!!!! */ #include "x86emu/x86emu.h" -#define printf printk +#define printf(x...) printk(BIOS_DEBUG, x) /* PH: empty versions of set/clr_ci * TODO: remove! */ static inline void clr_ci(void) {}; static inline void set_ci(void) {}; -/* Set CONFIG_YABEL_DEBUG_FLAGS is a binary switch that allows you - * to select the following items to debug. 1=on 0=off. After you - * decide what you want to debug create the binary value, convert to hex - * and set the Option (Ex. CONFIG_YABEL_DEBUG_FLAGS = 0x31FF //Debug All). +/* debug_flags is a binary switch that allows you to select the following items + * to debug. 1=on 0=off. After you decide what you want to debug create the + * binary value, convert to hex and set the option. These options can be + * selected in Kconfig. * * |-DEBUG_JMP - print info about JMP and RETF opcodes from x86emu * ||-DEBUG_TRACE_X86EMU - print _all_ opcodes that are executed by x86emu (WARNING: this will produce a LOT of output) @@ -69,9 +66,7 @@ static inline void set_ci(void) {}; // set to enable tracing of JMPs in x86emu #define DEBUG_JMP 0x2000 -//#define DEBUG -//#undef DEBUG -#ifdef DEBUG +#if defined(CONFIG_X86EMU_DEBUG) && CONFIG_X86EMU_DEBUG #define CHECK_DBG(_flag) if (debug_flags & _flag) diff --git a/util/x86emu/yabel/device.c b/util/x86emu/yabel/device.c index 929e97779b..7e71a45e97 100644 --- a/util/x86emu/yabel/device.c +++ b/util/x86emu/yabel/device.c @@ -40,7 +40,7 @@ typedef struct { #ifdef CONFIG_PCI_OPTION_ROM_RUN_YABEL /* coreboot version */ -void +static void biosemu_dev_get_addr_info(void) { int taa_index = 0; @@ -112,7 +112,7 @@ biosemu_dev_get_addr_info(void) } // store last entry index of translate_address_array taa_last_entry = taa_index - 1; -#ifdef DEBUG +#if defined(CONFIG_X86EMU_DEBUG) && CONFIG_X86EMU_DEBUG //dump translate_address_array printf("translate_address_array: \n"); translate_address_t ta; @@ -195,7 +195,7 @@ biosemu_dev_get_addr_info(void) } // store last entry index of translate_address_array taa_last_entry = taa_index - 1; -#ifdef DEBUG +#if defined(CONFIG_X86EMU_DEBUG) && CONFIG_X86EMU_DEBUG //dump translate_address_array printf("translate_address_array: \n"); translate_address_t ta; @@ -210,11 +210,12 @@ biosemu_dev_get_addr_info(void) } #endif +#ifndef CONFIG_PCI_OPTION_ROM_RUN_YABEL // to simulate accesses to legacy VGA Memory (0xA0000-0xBFFFF) // we look for the first prefetchable memory BAR, if no prefetchable BAR found, // we use the first memory BAR // dev_translate_addr will translate accesses to the legacy VGA Memory into the found vmem BAR -void +static void biosemu_dev_find_vmem_addr(void) { int i = 0; @@ -257,7 +258,6 @@ biosemu_dev_find_vmem_addr(void) //bios_device.vmem_size = 0; } -#ifndef CONFIG_PCI_OPTION_ROM_RUN_YABEL void biosemu_dev_get_puid(void) { @@ -267,7 +267,7 @@ biosemu_dev_get_puid(void) } #endif -void +static void biosemu_dev_get_device_vendor_id(void) { @@ -334,7 +334,7 @@ biosemu_dev_check_exprom(unsigned long rom_base_addr) memcpy(&pci_ds, (void *) (rom_base_addr + pci_ds_offset), sizeof(pci_ds)); clr_ci(); -#ifdef DEBUG +#if defined(CONFIG_X86EMU_DEBUG) && CONFIG_X86EMU_DEBUG DEBUG_PRINTF("PCI Data Structure @%lx:\n", rom_base_addr + pci_ds_offset); dump((void *) &pci_ds, sizeof(pci_ds)); diff --git a/util/x86emu/yabel/interrupt.c b/util/x86emu/yabel/interrupt.c index 79b0899a08..9dc33fa8d1 100644 --- a/util/x86emu/yabel/interrupt.c +++ b/util/x86emu/yabel/interrupt.c @@ -11,6 +11,7 @@ * IBM Corporation - initial implementation *****************************************************************************/ +#include <types.h> #include "compat/rtas.h" #include "biosemu.h" @@ -18,6 +19,7 @@ #include "device.h" #include "debug.h" #include "pmm.h" +#include "interrupt.h" #include <x86emu/x86emu.h> #include "../x86emu/prim_ops.h" diff --git a/util/x86emu/yabel/io.c b/util/x86emu/yabel/io.c index 9bb2df4960..6d36e8078f 100644 --- a/util/x86emu/yabel/io.c +++ b/util/x86emu/yabel/io.c @@ -17,6 +17,7 @@ #include "device.h" #include "debug.h" #include <x86emu/x86emu.h> +#include "io.h" #ifdef CONFIG_PCI_OPTION_ROM_RUN_YABEL #include <device/pci.h> @@ -87,10 +88,7 @@ u8 my_inb(X86EMU_pioAddr addr) u8 val; val = inb(addr); -#ifdef CONFIG_DEBUG - if ((debug_flags & DEBUG_IO) && (addr != 0x40)) - printk("inb(0x%04x) = 0x%02x\n", addr, val); -#endif + DEBUG_PRINTF_IO("inb(0x%04x) = 0x%02x\n", addr, val); return val; } @@ -100,11 +98,8 @@ u16 my_inw(X86EMU_pioAddr addr) u16 val; val = inw(addr); + DEBUG_PRINTF_IO("inw(0x%04x) = 0x%04x\n", addr, val); -#ifdef CONFIG_DEBUG - if (debug_flags & DEBUG_IO) - printk("inw(0x%04x) = 0x%04x\n", addr, val); -#endif return val; } @@ -113,38 +108,26 @@ u32 my_inl(X86EMU_pioAddr addr) u32 val; val = inl(addr); + DEBUG_PRINTF_IO("inl(0x%04x) = 0x%08x\n", addr, val); -#ifdef CONFIG_DEBUG - if (debug_flags & DEBUG_IO) - printk("inl(0x%04x) = 0x%08x\n", addr, val); -#endif return val; } void my_outb(X86EMU_pioAddr addr, u8 val) { -#ifdef CONFIG_DEBUG - if ((debug_flags & DEBUG_IO) && (addr != 0x43)) - printk("outb(0x%02x, 0x%04x)\n", val, addr); -#endif + DEBUG_PRINTF_IO("outb(0x%02x, 0x%04x)\n", val, addr); outb(val, addr); } void my_outw(X86EMU_pioAddr addr, u16 val) { -#ifdef CONFIG_DEBUG - if (debug_flags & DEBUG_IO) - printk("outw(0x%04x, 0x%04x)\n", val, addr); -#endif + DEBUG_PRINTF_IO("outw(0x%04x, 0x%04x)\n", val, addr); outw(val, addr); } void my_outl(X86EMU_pioAddr addr, u32 val) { -#ifdef CONFIG_DEBUG - if (debug_flags & DEBUG_IO) - printk("outl(0x%08x, 0x%04x)\n", val, addr); -#endif + DEBUG_PRINTF_IO("outl(0x%08x, 0x%04x)\n", val, addr); outl(val, addr); } diff --git a/util/x86emu/yabel/mem.c b/util/x86emu/yabel/mem.c index 1cf66ddff7..c04f56bfac 100644 --- a/util/x86emu/yabel/mem.c +++ b/util/x86emu/yabel/mem.c @@ -16,10 +16,11 @@ #include "device.h" #include "x86emu/x86emu.h" #include "biosemu.h" +#include "mem.h" #include "compat/time.h" // define a check for access to certain (virtual) memory regions (interrupt handlers, BIOS Data Area, ...) -#ifdef DEBUG +#if CONFIG_X86EMU_DEBUG static u8 in_check = 0; // to avoid recursion... u16 ebda_segment; u32 ebda_size; @@ -27,11 +28,6 @@ u32 ebda_size; //TODO: these macros have grown so large, that they should be changed to an inline function, //just for the sake of readability... -//declare prototypes of the functions to follow, for use in DEBUG_CHECK_VMEM_ACCESS -u8 my_rdb(u32); -u16 my_rdw(u32); -u32 my_rdl(u32); - #define DEBUG_CHECK_VMEM_READ(_addr, _rval) \ if ((debug_flags & DEBUG_CHECK_VMEM_ACCESS) && (in_check == 0)) { \ in_check = 1; \ diff --git a/util/x86emu/yabel/vbe.c b/util/x86emu/yabel/vbe.c index 6814b1964f..11a1ece73d 100644 --- a/util/x86emu/yabel/vbe.c +++ b/util/x86emu/yabel/vbe.c @@ -154,7 +154,7 @@ vbe_prepare(void) } // VBE Function 00h -u8 +static u8 vbe_info(vbe_info_t * info) { vbe_prepare(); @@ -223,7 +223,7 @@ vbe_info(vbe_info_t * info) } // VBE Function 01h -u8 +static u8 vbe_get_mode_info(vbe_mode_info_t * mode_info) { vbe_prepare(); @@ -264,7 +264,7 @@ vbe_get_mode_info(vbe_mode_info_t * mode_info) } // VBE Function 02h -u8 +static u8 vbe_set_mode(vbe_mode_info_t * mode_info) { vbe_prepare(); @@ -301,7 +301,7 @@ vbe_set_mode(vbe_mode_info_t * mode_info) } //VBE Function 08h -u8 +static u8 vbe_set_palette_format(u8 format) { vbe_prepare(); @@ -337,7 +337,7 @@ vbe_set_palette_format(u8 format) } // VBE Function 09h -u8 +static u8 vbe_set_color(u16 color_number, u32 color_value) { vbe_prepare(); @@ -379,7 +379,7 @@ vbe_set_color(u16 color_number, u32 color_value) return 0; } -u8 +static u8 vbe_get_color(u16 color_number, u32 * color_value) { vbe_prepare(); @@ -422,7 +422,7 @@ vbe_get_color(u16 color_number, u32 * color_value) } // VBE Function 15h -u8 +static u8 vbe_get_ddc_info(vbe_ddc_info_t * ddc_info) { vbe_prepare(); @@ -496,7 +496,7 @@ vbe_get_ddc_info(vbe_ddc_info_t * ddc_info) return 0; } -u32 +static u32 vbe_get_info(void) { u8 rval; @@ -571,7 +571,7 @@ vbe_get_info(void) } #endif if (*((u64 *) ddc_info.edid_block_zero) != - (u64) 0x00FFFFFFFFFFFF00) { + (u64) 0x00FFFFFFFFFFFF00ULL) { // invalid EDID signature... probably no monitor output->display_type = 0x0; @@ -599,36 +599,36 @@ vbe_get_info(void) DEBUG_PRINTF_VBE("Video Mode 0x%04x available, %s\n", mode_info.video_mode, - (mode_info.attributes & 0x1) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x1) == 0 ? "not supported" : "supported"); DEBUG_PRINTF_VBE("\tTTY: %s\n", - (mode_info.attributes & 0x4) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x4) == 0 ? "no" : "yes"); DEBUG_PRINTF_VBE("\tMode: %s %s\n", - (mode_info.attributes & 0x8) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x8) == 0 ? "monochrome" : "color", - (mode_info.attributes & 0x10) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x10) == 0 ? "text" : "graphics"); DEBUG_PRINTF_VBE("\tVGA: %s\n", - (mode_info.attributes & 0x20) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x20) == 0 ? "compatible" : "not compatible"); DEBUG_PRINTF_VBE("\tWindowed Mode: %s\n", - (mode_info.attributes & 0x40) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x40) == 0 ? "yes" : "no"); DEBUG_PRINTF_VBE("\tFramebuffer: %s\n", - (mode_info.attributes & 0x80) == + (le16_to_cpu(mode_info.vesa.mode_attributes) & 0x80) == 0 ? "no" : "yes"); DEBUG_PRINTF_VBE("\tResolution: %dx%d\n", - mode_info.x_resolution, - mode_info.y_resolution); + le16_to_cpu(mode_info.vesa.x_resolution), + le16_to_cpu(mode_info.vesa.y_resolution)); DEBUG_PRINTF_VBE("\tChar Size: %dx%d\n", - mode_info.x_charsize, mode_info.y_charsize); + mode_info.vesa.x_charsize, mode_info.vesa.y_charsize); DEBUG_PRINTF_VBE("\tColor Depth: %dbpp\n", - mode_info.bits_per_pixel); + mode_info.vesa.bits_per_pixel); DEBUG_PRINTF_VBE("\tMemory Model: 0x%x\n", - mode_info.memory_model); + mode_info.vesa.memory_model); DEBUG_PRINTF_VBE("\tFramebuffer Offset: %08x\n", - mode_info.framebuffer_address); + le32_to_cpu(mode_info.vesa.phys_base_ptr)); if ((mode_info.vesa.bits_per_pixel == input.color_depth) && (le16_to_cpu(mode_info.vesa.x_resolution) <= input.max_screen_width) @@ -647,10 +647,10 @@ vbe_get_info(void) DEBUG_PRINTF_VBE ("Best Video Mode found: 0x%x, %dx%d, %dbpp, framebuffer_address: 0x%x\n", best_mode_info.video_mode, - best_mode_info.x_resolution, - best_mode_info.y_resolution, - best_mode_info.bits_per_pixel, - best_mode_info.framebuffer_address); + best_mode_info.vesa.x_resolution, + best_mode_info.vesa.y_resolution, + best_mode_info.vesa.bits_per_pixel, + le32_to_cpu(best_mode_info.vesa.phys_base_ptr)); //printf("Mode Info Dump:"); //dump(best_mode_info.mode_info_block, 64); |