X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=drivers%2Fbios_emulator%2Fbiosemu.c;h=9d4f07c074d33d1e3ad52a5a09164822188004a9;hb=b8162f1b75b4c52f3ca431520742af8bf0721cd9;hp=4c3aedf4130796f5f166e2fb6d21f212e67159ea;hpb=3b3bff4cbf2cb14f9a3e7d03f26ebab900efe4ae;p=karo-tx-uboot.git diff --git a/drivers/bios_emulator/biosemu.c b/drivers/bios_emulator/biosemu.c index 4c3aedf413..9d4f07c074 100644 --- a/drivers/bios_emulator/biosemu.c +++ b/drivers/bios_emulator/biosemu.c @@ -3,7 +3,7 @@ * BIOS emulator and interface * to Realmode X86 Emulator Library * -* Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved. +* Copyright (C) 2007 Freescale Semiconductor, Inc. * Jason Jin * * Copyright (C) 1996-1999 SciTech Software, Inc. @@ -45,13 +45,12 @@ * ****************************************************************************/ -#include "biosemui.h" #include - -#if defined(CONFIG_BIOSEMU) +#include +#include "biosemui.h" BE_sysEnv _BE_env = {{0}}; -static X86EMU_memFuncs _BE_mem __attribute__((section(".got2"))) = { +static X86EMU_memFuncs _BE_mem __attribute__((section(GOT2_TYPE))) = { BE_rdb, BE_rdw, BE_rdl, @@ -60,7 +59,7 @@ static X86EMU_memFuncs _BE_mem __attribute__((section(".got2"))) = { BE_wrl, }; -static X86EMU_pioFuncs _BE_pio __attribute__((section(".got2"))) = { +static X86EMU_pioFuncs _BE_pio __attribute__((section(GOT2_TYPE))) = { BE_inb, BE_inw, BE_inl, @@ -94,7 +93,7 @@ int X86API BE_init(u32 debugFlags, int memSize, BE_VGAInfo * info, int shared) return 0; } - M.mem_base = (unsigned long)malloc(memSize); + M.mem_base = malloc(memSize); if (M.mem_base == NULL){ printf("Biosemu:Out of memory!"); @@ -104,7 +103,7 @@ int X86API BE_init(u32 debugFlags, int memSize, BE_VGAInfo * info, int shared) _BE_env.emulateVGA = 0; _BE_env.busmem_base = (unsigned long)malloc(128 * 1024); - if (_BE_env.busmem_base == NULL){ + if ((void *)_BE_env.busmem_base == NULL){ printf("Biosemu:Out of memory!"); return 0; } @@ -145,7 +144,8 @@ void X86API BE_setVGA(BE_VGAInfo * info) _BE_env.biosmem_base = _BE_env.busmem_base + 0x20000; _BE_env.biosmem_limit = 0xC7FFF; } - if (*((u32 *) info->LowMem) == 0) + if ((info->LowMem[0] == 0) && (info->LowMem[1] == 0) && + (info->LowMem[2] == 0) && (info->LowMem[3] == 0)) _BE_bios_init((u32 *) info->LowMem); memcpy((u8 *) M.mem_base, info->LowMem, sizeof(info->LowMem)); } @@ -228,7 +228,7 @@ Cleans up and exits the emulator. void X86API BE_exit(void) { free(M.mem_base); - free(_BE_env.busmem_base); + free((void *)_BE_env.busmem_base); } /**************************************************************************** @@ -370,4 +370,3 @@ int X86API BE_int86x(int intno, RMREGS * in, RMREGS * out, RMSREGS * sregs) sregs->gs = M.x86.R_GS; return out->x.ax; } -#endif