1 /****************************************************************************
4 * This program and the accompanying materials
5 * are made available under the terms of the BSD License
6 * which accompanies this distribution, and is available at
7 * http://www.opensource.org/licenses/bsd-license.php
9 * Copyright (c) 2008 Pattrick Hueper <phueper@hueper.net>
10 ****************************************************************************/
12 /* this file contains functions provided by SLOF, that the current biosemu implementation needs
13 * they should go away inthe future...
18 #include <device/device.h>
20 #include "../biosemu.h"
22 #include "../compat/time.h"
24 #define VMEM_SIZE (1024 * 1024) /* 1 MB */
26 #if !defined(CONFIG_YABEL_DIRECTHW) || (!CONFIG_YABEL_DIRECTHW)
27 #ifdef CONFIG_YABEL_VIRTMEM_LOCATION
28 u8* vmem = (u8 *) CONFIG_YABEL_VIRTMEM_LOCATION;
30 u8* vmem = (u8 *) (16*1024*1024); /* default to 16MB */
36 void run_bios(struct device * dev, unsigned long addr)
39 biosemu(vmem, VMEM_SIZE, dev, addr);
46 printf("Copying legacy memory from %p to the lower 1MB\n", vmem);
47 memcpy((void *)0x00000, vmem + 0x00000, 0x400); // IVT
48 memcpy((void *)0x00400, vmem + 0x00400, 0x100); // BDA
49 memcpy((void *)0xc0000, vmem + 0xc0000, 0x10000); // VGA OPROM
53 unsigned long tb_freq = 0;
62 : "=a"(eax), "=d"(edx)
63 : /* no inputs, no clobber */);
64 act = ((u64) edx << 32) | eax;