summaryrefslogtreecommitdiffstats
path: root/qemu/roms/ipxe/src/interface/linux
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/ipxe/src/interface/linux')
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_console.c155
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_entropy.c101
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_nap.c41
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_pci.c189
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_smbios.c115
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_time.c50
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_timer.c87
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_uaccess.c38
-rw-r--r--qemu/roms/ipxe/src/interface/linux/linux_umalloc.c154
9 files changed, 0 insertions, 930 deletions
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_console.c b/qemu/roms/ipxe/src/interface/linux/linux_console.c
deleted file mode 100644
index 5105eaa94..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_console.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2010 Piotr Jaroszyński <p.jaroszynski@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-FILE_LICENCE(GPL2_OR_LATER);
-
-/** @file
- *
- * Linux console implementation.
- *
- */
-
-#include <ipxe/console.h>
-
-#include <ipxe/init.h>
-#include <ipxe/keys.h>
-#include <linux_api.h>
-
-#include <linux/termios.h>
-#include <asm/errno.h>
-
-#include <config/console.h>
-
-/* Set default console usage if applicable */
-#if ! ( defined ( CONSOLE_LINUX ) && CONSOLE_EXPLICIT ( CONSOLE_LINUX ) )
-#undef CONSOLE_LINUX
-#define CONSOLE_LINUX ( CONSOLE_USAGE_ALL & ~CONSOLE_USAGE_LOG )
-#endif
-
-static void linux_console_putchar(int c)
-{
- /* write to stdout */
- if (linux_write(1, &c, 1) != 1)
- DBG("linux_console write failed (%s)\n", linux_strerror(linux_errno));
-}
-
-static int linux_console_getchar()
-{
- char c;
-
- /* read from stdin */
- if (linux_read(0, &c, 1) < 0) {
- DBG("linux_console read failed (%s)\n", linux_strerror(linux_errno));
- return 0;
- }
- /* backspace seems to be returned as ascii del, map it here */
- if (c == 0x7f)
- return KEY_BACKSPACE;
- else
- return c;
-}
-
-static int linux_console_iskey()
-{
- struct pollfd pfd;
- pfd.fd = 0;
- pfd.events = POLLIN;
-
- /* poll for data to be read on stdin */
- if (linux_poll(&pfd, 1, 0) == -1) {
- DBG("linux_console poll failed (%s)\n", linux_strerror(linux_errno));
- return 0;
- }
-
- if (pfd.revents & POLLIN)
- return 1;
- else
- return 0;
-}
-
-struct console_driver linux_console __console_driver = {
- .disabled = 0,
- .putchar = linux_console_putchar,
- .getchar = linux_console_getchar,
- .iskey = linux_console_iskey,
- .usage = CONSOLE_LINUX,
-};
-
-static int linux_tcgetattr(int fd, struct termios *termios_p)
-{
- return linux_ioctl(fd, TCGETS, termios_p);
-}
-
-static int linux_tcsetattr(int fd, int optional_actions, const struct termios *termios_p)
-{
- unsigned long int cmd;
-
- switch (optional_actions)
- {
- case TCSANOW:
- cmd = TCSETS;
- break;
- case TCSADRAIN:
- cmd = TCSETSW;
- break;
- case TCSAFLUSH:
- cmd = TCSETSF;
- break;
- default:
- linux_errno = EINVAL;
- return -1;
- }
-
- return linux_ioctl(fd, cmd, termios_p);
-}
-
-/** Saved termios attributes */
-static struct termios saved_termios;
-
-/** Setup the terminal for our use */
-static void linux_console_startup(void)
-{
- struct termios t;
-
- if (linux_tcgetattr(0, &t)) {
- DBG("linux_console tcgetattr failed (%s)", linux_strerror(linux_errno));
- return;
- }
-
- saved_termios = t;
-
- /* Disable canonical mode and echo. Let readline handle that */
- t.c_lflag &= ~(ECHO | ICANON);
- /* stop ^C from sending a signal */
- t.c_cc[VINTR] = 0;
-
- if (linux_tcsetattr(0, TCSAFLUSH, &t))
- DBG("linux_console tcsetattr failed (%s)", linux_strerror(linux_errno));
-}
-
-/** Restores original terminal attributes on shutdown */
-static void linux_console_shutdown(int flags __unused)
-{
- if (linux_tcsetattr(0, TCSAFLUSH, &saved_termios))
- DBG("linux_console tcsetattr failed (%s)", linux_strerror(linux_errno));
-}
-
-struct startup_fn linux_console_startup_fn __startup_fn(STARTUP_EARLY) = {
- .startup = linux_console_startup,
- .shutdown = linux_console_shutdown,
-};
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_entropy.c b/qemu/roms/ipxe/src/interface/linux/linux_entropy.c
deleted file mode 100644
index 0f8e45d36..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_entropy.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2012 Michael Brown <mbrown@fensystems.co.uk>.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * You can also choose to distribute this program under the terms of
- * the Unmodified Binary Distribution Licence (as given in the file
- * COPYING.UBDL), provided that you have satisfied its requirements.
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-/** @file
- *
- * Linux entropy source
- *
- */
-
-#include <stdint.h>
-#include <errno.h>
-#include <linux_api.h>
-#include <ipxe/entropy.h>
-
-/** Entropy source filename */
-static const char entropy_filename[] = "/dev/random";
-
-/** Entropy source file handle */
-static int entropy_fd;
-
-/**
- * Enable entropy gathering
- *
- * @ret rc Return status code
- */
-static int linux_entropy_enable ( void ) {
-
- /* Open entropy source */
- entropy_fd = linux_open ( entropy_filename, O_RDONLY );
- if ( entropy_fd < 0 ) {
- DBGC ( &entropy_fd, "ENTROPY could not open %s: %s\n",
- entropy_filename, linux_strerror ( linux_errno ) );
- return entropy_fd;
- }
-
- return 0;
-}
-
-/**
- * Disable entropy gathering
- *
- */
-static void linux_entropy_disable ( void ) {
-
- /* Close entropy source */
- linux_close ( entropy_fd );
-}
-
-/**
- * Get noise sample
- *
- * @ret noise Noise sample
- * @ret rc Return status code
- */
-static int linux_get_noise ( noise_sample_t *noise ) {
- uint8_t byte;
- ssize_t len;
-
- /* Read a single byte from entropy source */
- len = linux_read ( entropy_fd, &byte, sizeof ( byte ) );
- if ( len < 0 ) {
- DBGC ( &entropy_fd, "ENTROPY could not read from %s: %s\n",
- entropy_filename, linux_strerror ( linux_errno ) );
- return len;
- }
- if ( len == 0 ) {
- DBGC ( &entropy_fd, "ENTROPY EOF on reading from %s: %s\n",
- entropy_filename, linux_strerror ( linux_errno ) );
- return -EPIPE;
- }
- *noise = byte;
-
- return 0;
-}
-
-PROVIDE_ENTROPY_INLINE ( linux, min_entropy_per_sample );
-PROVIDE_ENTROPY ( linux, entropy_enable, linux_entropy_enable );
-PROVIDE_ENTROPY ( linux, entropy_disable, linux_entropy_disable );
-PROVIDE_ENTROPY ( linux, get_noise, linux_get_noise );
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_nap.c b/qemu/roms/ipxe/src/interface/linux/linux_nap.c
deleted file mode 100644
index f1d3cd962..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_nap.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2010 Piotr Jaroszyński <p.jaroszynski@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-FILE_LICENCE(GPL2_OR_LATER);
-
-#include <ipxe/nap.h>
-
-#include <linux_api.h>
-
-/** @file
- *
- * iPXE CPU sleeping API for linux
- *
- */
-
-/**
- * Sleep until next CPU interrupt
- *
- */
-static void linux_cpu_nap(void)
-{
- linux_usleep(0);
-}
-
-PROVIDE_NAP(linux, cpu_nap, linux_cpu_nap);
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_pci.c b/qemu/roms/ipxe/src/interface/linux/linux_pci.c
deleted file mode 100644
index 0c140cb89..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_pci.c
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Copyright (C) 2013 Michael Brown <mbrown@fensystems.co.uk>.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * You can also choose to distribute this program under the terms of
- * the Unmodified Binary Distribution Licence (as given in the file
- * COPYING.UBDL), provided that you have satisfied its requirements.
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-#include <stdio.h>
-#include <errno.h>
-#include <byteswap.h>
-#include <linux_api.h>
-#include <ipxe/linux.h>
-#include <ipxe/pci.h>
-
-/** @file
- *
- * iPXE PCI API for Linux
- *
- */
-
-/**
- * Open PCI configuration space
- *
- * @v pci PCI device
- * @v flags Access mode flags
- * @v where Address within configuration space
- * @ret fd File handle, or negative error
- */
-static int linux_pci_open ( struct pci_device *pci, int flags,
- unsigned long where ) {
- char filename[ 22 /* "/proc/bus/pci/xx/xx.x" + NUL */ ];
- int fd;
- int rc;
-
- /* Construct filename */
- snprintf ( filename, sizeof ( filename ), "/proc/bus/pci/%02x/%02x.%x",
- PCI_BUS ( pci->busdevfn ), PCI_SLOT ( pci->busdevfn ),
- PCI_FUNC ( pci->busdevfn ) );
-
- /* Open file */
- fd = linux_open ( filename, flags );
- if ( fd < 0 ) {
- DBGC ( pci, "PCI could not open %s: %s\n", filename,
- linux_strerror ( linux_errno ) );
- rc = -ELINUX ( linux_errno );
- goto err_open;
- }
-
- /* Seek to location */
- if ( linux_lseek ( fd, where, SEEK_SET ) < 0 ) {
- DBGC ( pci, "PCI could not seek to %s offset %#02lx: %s\n",
- filename, where, linux_strerror ( linux_errno ) );
- rc = -ELINUX ( linux_errno );
- goto err_seek;
- }
-
- return fd;
-
- err_seek:
- linux_close ( fd );
- err_open:
- return rc;
-}
-
-/**
- * Read from PCI configuration space
- *
- * @v pci PCI device
- * @v where Address within configuration space
- * @v value Data buffer
- * @v len Length to read
- * @ret rc Return status code
- */
-int linux_pci_read ( struct pci_device *pci, unsigned long where,
- unsigned long *value, size_t len ) {
- uint32_t tmp = 0;
- int fd;
- int check_len;
- int rc;
-
- /* Return "missing device" in case of error */
- *value = -1UL;
-
- /* Open configuration space */
- fd = linux_pci_open ( pci, O_RDONLY, where );
- if ( fd < 0 ) {
- rc = fd;
- goto err_open;
- }
-
- /* Read value */
- check_len = linux_read ( fd, &tmp, len );
- if ( check_len < 0 ) {
- DBGC ( pci, "PCI could not read from " PCI_FMT " %#02lx+%#zx: "
- "%s\n", PCI_ARGS ( pci ), where, len,
- linux_strerror ( linux_errno ) );
- rc = -ELINUX ( linux_errno );
- goto err_read;
- }
- if ( ( size_t ) check_len != len ) {
- DBGC ( pci, "PCI read only %#x bytes from " PCI_FMT
- " %#02lx+%#zx\n", check_len, PCI_ARGS ( pci ),
- where, len );
- rc = -EIO;
- goto err_read;
- }
-
- /* Return value */
- *value = le32_to_cpu ( tmp );
-
- /* Success */
- rc = 0;
-
- err_read:
- linux_close ( fd );
- err_open:
- return rc;
-}
-
-/**
- * Write to PCI configuration space
- *
- * @v pci PCI device
- * @v where Address within configuration space
- * @v value Value to write
- * @v len Length of value
- * @ret rc Return status code
- */
-int linux_pci_write ( struct pci_device *pci, unsigned long where,
- unsigned long value, size_t len ) {
- uint32_t tmp;
- int fd;
- int check_len;
- int rc;
-
- /* Open configuration space */
- fd = linux_pci_open ( pci, O_WRONLY, where );
- if ( fd < 0 ) {
- rc = fd;
- goto err_open;
- }
-
- /* Prepare value for writing */
- tmp = cpu_to_le32 ( value );
- assert ( len <= sizeof ( tmp ) );
-
- /* Write value */
- check_len = linux_write ( fd, &tmp, len );
- if ( check_len < 0 ) {
- DBGC ( pci, "PCI could not write to " PCI_FMT " %#02lx+%#zx: "
- "%s\n", PCI_ARGS ( pci ), where, len,
- linux_strerror ( linux_errno ) );
- rc = -ELINUX ( linux_errno );
- goto err_write;
- }
- if ( ( size_t ) check_len != len ) {
- DBGC ( pci, "PCI wrote only %#x bytes to " PCI_FMT
- " %#02lx+%#zx\n", check_len, PCI_ARGS ( pci ),
- where, len );
- rc = -EIO;
- goto err_write;
- }
-
- /* Success */
- rc = 0;
-
- err_write:
- linux_close ( fd );
- err_open:
- return rc;
-}
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_smbios.c b/qemu/roms/ipxe/src/interface/linux/linux_smbios.c
deleted file mode 100644
index 6e5174d23..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_smbios.c
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2013 Michael Brown <mbrown@fensystems.co.uk>.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-FILE_LICENCE ( GPL2_OR_LATER );
-
-#include <errno.h>
-#include <linux_api.h>
-#include <ipxe/linux.h>
-#include <ipxe/smbios.h>
-
-/** SMBIOS filename */
-static const char smbios_filename[] = "/dev/mem";
-
-/** SMBIOS entry point scan region start address */
-#define SMBIOS_ENTRY_START 0xf0000
-
-/** SMBIOS entry point scan region length */
-#define SMBIOS_ENTRY_LEN 0x10000
-
-/** SMBIOS mapping alignment */
-#define SMBIOS_ALIGN 0x1000
-
-/**
- * Find SMBIOS
- *
- * @v smbios SMBIOS entry point descriptor structure to fill in
- * @ret rc Return status code
- */
-static int linux_find_smbios ( struct smbios *smbios ) {
- struct smbios_entry entry;
- void *entry_mem;
- void *smbios_mem;
- size_t smbios_offset;
- size_t smbios_indent;
- size_t smbios_len;
- int fd;
- int rc;
-
- /* Open SMBIOS file */
- fd = linux_open ( smbios_filename, O_RDONLY );
- if ( fd < 0 ) {
- rc = -ELINUX ( linux_errno );
- DBGC ( smbios, "SMBIOS could not open %s: %s\n",
- smbios_filename, linux_strerror ( linux_errno ) );
- goto err_open;
- }
-
- /* Map the region potentially containing the SMBIOS entry point */
- entry_mem = linux_mmap ( NULL, SMBIOS_ENTRY_LEN, PROT_READ, MAP_SHARED,
- fd, SMBIOS_ENTRY_START );
- if ( entry_mem == MAP_FAILED ) {
- rc = -ELINUX ( linux_errno );
- DBGC ( smbios, "SMBIOS could not mmap %s (%#x+%#x): %s\n",
- smbios_filename, SMBIOS_ENTRY_START, SMBIOS_ENTRY_LEN,
- linux_strerror ( linux_errno ) );
- goto err_mmap_entry;
- }
-
- /* Scan for the SMBIOS entry point */
- if ( ( rc = find_smbios_entry ( virt_to_user ( entry_mem ),
- SMBIOS_ENTRY_LEN, &entry ) ) != 0 )
- goto err_find_entry;
-
- /* Map the region containing the SMBIOS structures */
- smbios_indent = ( entry.smbios_address & ( SMBIOS_ALIGN - 1 ) );
- smbios_offset = ( entry.smbios_address - smbios_indent );
- smbios_len = ( entry.smbios_len + smbios_indent );
- smbios_mem = linux_mmap ( NULL, smbios_len, PROT_READ, MAP_SHARED,
- fd, smbios_offset );
- if ( smbios_mem == MAP_FAILED ) {
- rc = -ELINUX ( linux_errno );
- DBGC ( smbios, "SMBIOS could not mmap %s (%#zx+%#zx): %s\n",
- smbios_filename, smbios_offset, smbios_len,
- linux_strerror ( linux_errno ) );
- goto err_mmap_smbios;
- }
-
- /* Fill in entry point descriptor structure */
- smbios->address = virt_to_user ( smbios_mem + smbios_indent );
- smbios->len = entry.smbios_len;
- smbios->count = entry.smbios_count;
- smbios->version = SMBIOS_VERSION ( entry.major, entry.minor );
-
- /* Unmap the entry point region (no longer required) */
- linux_munmap ( entry_mem, SMBIOS_ENTRY_LEN );
-
- return 0;
-
- linux_munmap ( smbios_mem, smbios_len );
- err_mmap_smbios:
- err_find_entry:
- linux_munmap ( entry_mem, SMBIOS_ENTRY_LEN );
- err_mmap_entry:
- linux_close ( fd );
- err_open:
- return rc;
-}
-
-PROVIDE_SMBIOS ( linux, find_smbios, linux_find_smbios );
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_time.c b/qemu/roms/ipxe/src/interface/linux/linux_time.c
deleted file mode 100644
index 9e99fe9cd..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_time.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2012 Michael Brown <mbrown@fensystems.co.uk>.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- *
- * You can also choose to distribute this program under the terms of
- * the Unmodified Binary Distribution Licence (as given in the file
- * COPYING.UBDL), provided that you have satisfied its requirements.
- */
-
-FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
-/** @file
- *
- * Linux time source
- *
- */
-
-#include <stdint.h>
-#include <stddef.h>
-#include <errno.h>
-#include <linux_api.h>
-#include <ipxe/time.h>
-
-/**
- * Get current time in seconds
- *
- * @ret time Time, in seconds
- */
-static time_t linux_now ( void ) {
- struct timeval now;
-
- linux_gettimeofday ( &now, NULL );
- return now.tv_sec;
-}
-
-PROVIDE_TIME ( linux, time_now, linux_now );
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_timer.c b/qemu/roms/ipxe/src/interface/linux/linux_timer.c
deleted file mode 100644
index 7a994517b..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_timer.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2010 Piotr Jaroszyński <p.jaroszynski@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-FILE_LICENCE(GPL2_OR_LATER);
-
-#include <stddef.h>
-#include <ipxe/timer.h>
-
-#include <linux_api.h>
-
-/** @file
- *
- * iPXE timer API for linux
- *
- */
-
-/**
- * Delay for a fixed number of microseconds
- *
- * @v usecs Number of microseconds for which to delay
- */
-static void linux_udelay(unsigned long usecs)
-{
- linux_usleep(usecs);
-}
-
-/**
- * Get number of ticks per second
- *
- * @ret ticks_per_sec Number of ticks per second
- */
-static unsigned long linux_ticks_per_sec(void)
-{
- return 1000;
-}
-
-/**
- * Get current system time in ticks
- *
- * linux doesn't provide an easy access to jiffies so implement it by measuring
- * the time since the first call to this function.
- *
- * Since this function is used to seed the (non-cryptographic) random
- * number generator, we round the start time down to the nearest whole
- * second. This minimises the chances of generating identical RNG
- * sequences (and hence identical TCP port numbers, etc) on
- * consecutive invocations of iPXE.
- *
- * @ret ticks Current time, in ticks
- */
-static unsigned long linux_currticks(void)
-{
- static struct timeval start;
- static int initialized = 0;
-
- if (! initialized) {
- linux_gettimeofday(&start, NULL);
- initialized = 1;
- }
-
- struct timeval now;
- linux_gettimeofday(&now, NULL);
-
- unsigned long ticks = (now.tv_sec - start.tv_sec) * linux_ticks_per_sec();
- ticks += now.tv_usec / (long)(1000000 / linux_ticks_per_sec());
-
- return ticks;
-}
-
-PROVIDE_TIMER(linux, udelay, linux_udelay);
-PROVIDE_TIMER(linux, currticks, linux_currticks);
-PROVIDE_TIMER(linux, ticks_per_sec, linux_ticks_per_sec);
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_uaccess.c b/qemu/roms/ipxe/src/interface/linux/linux_uaccess.c
deleted file mode 100644
index ea2d8057c..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_uaccess.c
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2010 Piotr Jaroszyński <p.jaroszynski@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
- */
-
-FILE_LICENCE(GPL2_OR_LATER);
-
-#include <ipxe/uaccess.h>
-
-/** @file
- *
- * iPXE user access API for linux
- *
- */
-
-PROVIDE_UACCESS_INLINE(linux, user_to_phys);
-PROVIDE_UACCESS_INLINE(linux, virt_to_user);
-PROVIDE_UACCESS_INLINE(linux, user_to_virt);
-PROVIDE_UACCESS_INLINE(linux, userptr_add);
-PROVIDE_UACCESS_INLINE(linux, memcpy_user);
-PROVIDE_UACCESS_INLINE(linux, memmove_user);
-PROVIDE_UACCESS_INLINE(linux, memset_user);
-PROVIDE_UACCESS_INLINE(linux, strlen_user);
-PROVIDE_UACCESS_INLINE(linux, memchr_user);
diff --git a/qemu/roms/ipxe/src/interface/linux/linux_umalloc.c b/qemu/roms/ipxe/src/interface/linux/linux_umalloc.c
deleted file mode 100644
index aa0052c53..000000000
--- a/qemu/roms/ipxe/src/interface/linux/linux_umalloc.c
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright (C) 2010 Piotr Jaroszyński <p.jaroszynski@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of the
- * License, or any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-FILE_LICENCE(GPL2_OR_LATER);
-
-#include <valgrind/memcheck.h>
-
-/** @file
- *
- * iPXE user memory allocation API for linux
- *
- */
-
-#include <assert.h>
-#include <ipxe/umalloc.h>
-
-#include <linux_api.h>
-
-/** Special address returned for empty allocations */
-#define NOWHERE ((void *)-1)
-
-/** Poison to make the metadata more unique */
-#define POISON 0xa5a5a5a5
-#define min(a,b) (((a)<(b))?(a):(b))
-
-/** Metadata stored at the beginning of all allocations */
-struct metadata
-{
- unsigned poison;
- size_t size;
-};
-
-#define SIZE_MD (sizeof(struct metadata))
-
-/** Simple realloc which passes most of the work to mmap(), mremap() and munmap() */
-static void * linux_realloc(void *ptr, size_t size)
-{
- struct metadata md = {0, 0};
- struct metadata * mdptr = NULL;
-
- DBG2("linux_realloc(%p, %zd)\n", ptr, size);
-
- /* Check whether we have a valid pointer */
- if (ptr != NULL && ptr != NOWHERE) {
- mdptr = ptr - SIZE_MD;
- VALGRIND_MAKE_MEM_DEFINED(mdptr, SIZE_MD);
- md = *mdptr;
- VALGRIND_MAKE_MEM_NOACCESS(mdptr, SIZE_MD);
-
- /* Check for poison in the metadata */
- if (md.poison != POISON) {
- DBG("linux_realloc bad poison: 0x%x (expected 0x%x)\n", md.poison, POISON);
- return NULL;
- }
- } else {
- /* Handle NOWHERE as NULL */
- ptr = NULL;
- }
-
- /*
- * At this point, ptr is either NULL or pointing to a region allocated by us.
- * In the latter case mdptr is pointing to a valid metadata, otherwise it is NULL.
- */
-
- /* Handle deallocation or allocation of size 0 */
- if (size == 0) {
- if (mdptr) {
- if (linux_munmap(mdptr, md.size))
- DBG("linux_realloc munmap failed: %s\n", linux_strerror(linux_errno));
- VALGRIND_FREELIKE_BLOCK(ptr, sizeof(*mdptr));
- }
- return NOWHERE;
- }
-
- if (ptr) {
- char *vbits = NULL;
-
- if (RUNNING_ON_VALGRIND > 0)
- vbits = linux_realloc(NULL, min(size, md.size));
-
-/* prevent an unused variable warning when building w/o valgrind support */
-#ifndef NVALGRIND
- VALGRIND_GET_VBITS(ptr, vbits, min(size, md.size));
-#endif
-
- VALGRIND_FREELIKE_BLOCK(ptr, SIZE_MD);
-
- mdptr = linux_mremap(mdptr, md.size + SIZE_MD, size + SIZE_MD, MREMAP_MAYMOVE);
- if (mdptr == MAP_FAILED) {
- DBG("linux_realloc mremap failed: %s\n", linux_strerror(linux_errno));
- return NULL;
- }
- ptr = ((void *)mdptr) + SIZE_MD;
-
- VALGRIND_MALLOCLIKE_BLOCK(ptr, size, SIZE_MD, 0);
-/* prevent an unused variable warning when building w/o valgrind support */
-#ifndef NVALGRIND
- VALGRIND_SET_VBITS(ptr, vbits, min(size, md.size));
-#endif
-
- if (RUNNING_ON_VALGRIND > 0)
- linux_realloc(vbits, 0);
- } else {
- mdptr = linux_mmap(NULL, size + SIZE_MD, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- if (mdptr == MAP_FAILED) {
- DBG("linux_realloc mmap failed: %s\n", linux_strerror(linux_errno));
- return NULL;
- }
- ptr = ((void *)mdptr) + SIZE_MD;
- VALGRIND_MALLOCLIKE_BLOCK(ptr, size, SIZE_MD, 0);
- }
-
- /* Update the metadata */
- VALGRIND_MAKE_MEM_DEFINED(mdptr, SIZE_MD);
- mdptr->poison = POISON;
- mdptr->size = size;
- VALGRIND_MAKE_MEM_NOACCESS(mdptr, SIZE_MD);
- // VALGRIND_MALLOCLIKE_BLOCK ignores redzones currently, make our own
- VALGRIND_MAKE_MEM_NOACCESS(ptr + size, SIZE_MD);
-
- return ptr;
-}
-
-/**
- * Reallocate external memory
- *
- * @v old_ptr Memory previously allocated by umalloc(), or UNULL
- * @v new_size Requested size
- * @ret new_ptr Allocated memory, or UNULL
- *
- * Calling realloc() with a new size of zero is a valid way to free a
- * memory block.
- */
-static userptr_t linux_urealloc(userptr_t old_ptr, size_t new_size)
-{
- return (userptr_t)linux_realloc((void *)old_ptr, new_size);
-}
-
-PROVIDE_UMALLOC(linux, urealloc, linux_urealloc);