From 437fd90c0250dee670290f9b714253671a990160 Mon Sep 17 00:00:00 2001 From: José Pekkarinen Date: Wed, 18 May 2016 13:18:31 +0300 Subject: These changes are the raw update to qemu-2.6. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Collission happened in the following patches: migration: do cleanup operation after completion(738df5b9) Bug fix.(1750c932f86) kvmclock: add a new function to update env->tsc.(b52baab2) The code provided by the patches was already in the upstreamed version. Change-Id: I3cc11841a6a76ae20887b2e245710199e1ea7f9a Signed-off-by: José Pekkarinen --- qemu/roms/ipxe/src/arch/i386/include/basemem.h | 2 +- .../ipxe/src/arch/i386/include/basemem_packet.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bios.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/biosint.h | 2 +- .../ipxe/src/arch/i386/include/bits/byteswap.h | 2 +- .../ipxe/src/arch/i386/include/bits/compiler.h | 5 +- qemu/roms/ipxe/src/arch/i386/include/bits/endian.h | 8 --- .../roms/ipxe/src/arch/i386/include/bits/entropy.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bits/hyperv.h | 72 +++++++++++++++++++++ qemu/roms/ipxe/src/arch/i386/include/bits/nap.h | 2 +- .../roms/ipxe/src/arch/i386/include/bits/profile.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bits/reboot.h | 2 +- .../roms/ipxe/src/arch/i386/include/bits/sanboot.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bits/smbios.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bits/stdint.h | 2 +- .../roms/ipxe/src/arch/i386/include/bits/strings.h | 48 +++++++++++++- qemu/roms/ipxe/src/arch/i386/include/bits/time.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bits/timer.h | 2 +- .../roms/ipxe/src/arch/i386/include/bits/uaccess.h | 2 +- .../roms/ipxe/src/arch/i386/include/bits/umalloc.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bootsector.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/bzimage.h | 2 +- .../src/arch/i386/include/efi/ipxe/dhcp_arch.h | 11 +++- qemu/roms/ipxe/src/arch/i386/include/fakee820.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/initrd.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/int13.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/bios_nap.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/bios_reboot.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/bios_sanboot.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/bios_smbios.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/bios_timer.h | 8 +-- .../ipxe/src/arch/i386/include/ipxe/errno/pcbios.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/guestrpc.h | 2 +- .../src/arch/i386/include/ipxe/memtop_umalloc.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/ipxe/msr.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/rdtsc_timer.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/rtc_entropy.h | 2 +- .../ipxe/src/arch/i386/include/ipxe/rtc_time.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/ipxe/timer2.h | 14 ----- qemu/roms/ipxe/src/arch/i386/include/ipxe/vesafb.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/ipxe/vmware.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/librm.h | 14 +---- qemu/roms/ipxe/src/arch/i386/include/limits.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/memsizes.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/multiboot.h | 2 +- .../src/arch/i386/include/pcbios/ipxe/dhcp_arch.h | 11 +++- qemu/roms/ipxe/src/arch/i386/include/pic8259.h | 73 ---------------------- qemu/roms/ipxe/src/arch/i386/include/pnpbios.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/pxe.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/pxe_api.h | 6 +- qemu/roms/ipxe/src/arch/i386/include/pxe_call.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/pxe_error.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/pxe_types.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/realmode.h | 14 ++++- qemu/roms/ipxe/src/arch/i386/include/registers.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/rtc.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/sdi.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/setjmp.h | 46 ++++++++------ qemu/roms/ipxe/src/arch/i386/include/undi.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/undiload.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/undinet.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/undipreload.h | 2 +- qemu/roms/ipxe/src/arch/i386/include/undirom.h | 2 +- 63 files changed, 239 insertions(+), 191 deletions(-) delete mode 100644 qemu/roms/ipxe/src/arch/i386/include/bits/endian.h create mode 100644 qemu/roms/ipxe/src/arch/i386/include/bits/hyperv.h delete mode 100644 qemu/roms/ipxe/src/arch/i386/include/ipxe/timer2.h delete mode 100644 qemu/roms/ipxe/src/arch/i386/include/pic8259.h (limited to 'qemu/roms/ipxe/src/arch/i386/include') diff --git a/qemu/roms/ipxe/src/arch/i386/include/basemem.h b/qemu/roms/ipxe/src/arch/i386/include/basemem.h index c477c7fe2..01c2ea917 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/basemem.h +++ b/qemu/roms/ipxe/src/arch/i386/include/basemem.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/basemem_packet.h b/qemu/roms/ipxe/src/arch/i386/include/basemem_packet.h index 3cb477671..def6dee31 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/basemem_packet.h +++ b/qemu/roms/ipxe/src/arch/i386/include/basemem_packet.h @@ -1,7 +1,7 @@ #ifndef BASEMEM_PACKET_H #define BASEMEM_PACKET_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bios.h b/qemu/roms/ipxe/src/arch/i386/include/bios.h index 0754b1168..988bbc62b 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bios.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bios.h @@ -1,7 +1,7 @@ #ifndef BIOS_H #define BIOS_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define BDA_SEG 0x0040 #define BDA_EQUIPMENT_WORD 0x0010 diff --git a/qemu/roms/ipxe/src/arch/i386/include/biosint.h b/qemu/roms/ipxe/src/arch/i386/include/biosint.h index ab466af3c..67d6a3811 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/biosint.h +++ b/qemu/roms/ipxe/src/arch/i386/include/biosint.h @@ -6,7 +6,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/byteswap.h b/qemu/roms/ipxe/src/arch/i386/include/bits/byteswap.h index 0d9cb967c..53b6a454d 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/byteswap.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/byteswap.h @@ -9,7 +9,7 @@ #include -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); static inline __attribute__ (( always_inline, const )) uint16_t __bswap_variable_16 ( uint16_t x ) { diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/compiler.h b/qemu/roms/ipxe/src/arch/i386/include/bits/compiler.h index d48b4b385..87201135f 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/compiler.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/compiler.h @@ -1,7 +1,10 @@ #ifndef _BITS_COMPILER_H #define _BITS_COMPILER_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +/** Dummy relocation type */ +#define RELOC_TYPE_NONE R_386_NONE #ifndef ASSEMBLY diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/endian.h b/qemu/roms/ipxe/src/arch/i386/include/bits/endian.h deleted file mode 100644 index 841885424..000000000 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/endian.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef ETHERBOOT_BITS_ENDIAN_H -#define ETHERBOOT_BITS_ENDIAN_H - -FILE_LICENCE ( GPL2_OR_LATER ); - -#define __BYTE_ORDER __LITTLE_ENDIAN - -#endif /* ETHERBOOT_BITS_ENDIAN_H */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/entropy.h b/qemu/roms/ipxe/src/arch/i386/include/bits/entropy.h index 6dcceec6d..bfeb5e3b5 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/entropy.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/entropy.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/hyperv.h b/qemu/roms/ipxe/src/arch/i386/include/bits/hyperv.h new file mode 100644 index 000000000..3565c8a83 --- /dev/null +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/hyperv.h @@ -0,0 +1,72 @@ +#ifndef _BITS_HYPERV_H +#define _BITS_HYPERV_H + +/** @file + * + * Hyper-V interface + * + */ + +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +#include +#include +#include + +/** + * Issue hypercall + * + * @v hv Hyper-V hypervisor + * @v code Call code + * @v in Input parameters + * @v out Output parameters + * @ret status Status code + */ +static inline __attribute__ (( always_inline )) int +hv_call ( struct hv_hypervisor *hv, unsigned int code, const void *in, + void *out ) { + void *hypercall = hv->hypercall; + uint32_t in_phys; + uint32_t out_phys; + uint32_t discard_ecx; + uint32_t discard_edx; + uint16_t result; + + in_phys = ( ( __builtin_constant_p ( in ) && ( in == NULL ) ) + ? 0 : virt_to_phys ( in ) ); + out_phys = ( ( __builtin_constant_p ( out ) && ( out == NULL ) ) + ? 0 : virt_to_phys ( out ) ); + __asm__ __volatile__ ( "call *%9" + : "=a" ( result ), "=c" ( discard_ecx ), + "=d" ( discard_edx ) + : "d" ( 0 ), "a" ( code ), + "b" ( 0 ), "c" ( in_phys ), + "D" ( 0 ), "S" ( out_phys ), + "m" ( hypercall ) ); + return result; +} + +/** + * Set bit atomically + * + * @v bits Bit field + * @v bit Bit to set + */ +static inline __attribute__ (( always_inline )) void +hv_set_bit ( void *bits, unsigned int bit ) { + struct { + uint32_t dword[ ( bit / 32 ) + 1 ]; + } *dwords = bits; + + /* Set bit using "lock bts". Inform compiler that any memory + * from the start of the bit field up to and including the + * dword containing this bit may be modified. (This is + * overkill but shouldn't matter in practice since we're + * unlikely to subsequently read other bits from the same bit + * field.) + */ + __asm__ __volatile__ ( "lock bts %1, %0" + : "+m" ( *dwords ) : "Ir" ( bit ) ); +} + +#endif /* _BITS_HYPERV_H */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/nap.h b/qemu/roms/ipxe/src/arch/i386/include/bits/nap.h index 64066e6ab..e8bcfd13b 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/nap.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/nap.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/profile.h b/qemu/roms/ipxe/src/arch/i386/include/bits/profile.h index f3ee54ae9..e184d7b51 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/profile.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/profile.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/reboot.h b/qemu/roms/ipxe/src/arch/i386/include/bits/reboot.h index 5b09e95f7..803dacfe4 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/reboot.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/reboot.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/sanboot.h b/qemu/roms/ipxe/src/arch/i386/include/bits/sanboot.h index 9c77a4d42..f02d2e649 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/sanboot.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/sanboot.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/smbios.h b/qemu/roms/ipxe/src/arch/i386/include/bits/smbios.h index cc79eec51..2ab31e74b 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/smbios.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/smbios.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/stdint.h b/qemu/roms/ipxe/src/arch/i386/include/bits/stdint.h index 8edf13192..fe1f9946a 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/stdint.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/stdint.h @@ -1,7 +1,7 @@ #ifndef _BITS_STDINT_H #define _BITS_STDINT_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); typedef __SIZE_TYPE__ size_t; typedef signed long ssize_t; diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/strings.h b/qemu/roms/ipxe/src/arch/i386/include/bits/strings.h index 092bcb593..453545f00 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/strings.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/strings.h @@ -1,7 +1,51 @@ #ifndef _BITS_STRINGS_H #define _BITS_STRINGS_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +/** + * Find first (i.e. least significant) set bit + * + * @v value Value + * @ret lsb Least significant bit set in value (LSB=1), or zero + */ +static inline __attribute__ (( always_inline )) int __ffsl ( long value ) { + long lsb_minus_one; + + /* If the input value is zero, the BSF instruction returns + * ZF=0 and leaves an undefined value in the output register. + * Perform this check in C rather than asm so that it can be + * omitted in cases where the compiler is able to prove that + * the input is non-zero. + */ + if ( value ) { + __asm__ ( "bsfl %1, %0" + : "=r" ( lsb_minus_one ) + : "rm" ( value ) ); + return ( lsb_minus_one + 1 ); + } else { + return 0; + } +} + +/** + * Find first (i.e. least significant) set bit + * + * @v value Value + * @ret lsb Least significant bit set in value (LSB=1), or zero + */ +static inline __attribute__ (( always_inline )) int __ffsll ( long long value ){ + unsigned long high = ( value >> 32 ); + unsigned long low = ( value >> 0 ); + + if ( low ) { + return ( __ffsl ( low ) ); + } else if ( high ) { + return ( 32 + __ffsl ( high ) ); + } else { + return 0; + } +} /** * Find last (i.e. most significant) set bit @@ -13,7 +57,7 @@ static inline __attribute__ (( always_inline )) int __flsl ( long value ) { long msb_minus_one; /* If the input value is zero, the BSR instruction returns - * ZF=1 and leaves an undefined value in the output register. + * ZF=0 and leaves an undefined value in the output register. * Perform this check in C rather than asm so that it can be * omitted in cases where the compiler is able to prove that * the input is non-zero. diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/time.h b/qemu/roms/ipxe/src/arch/i386/include/bits/time.h index 24dd020e9..6a5d63d32 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/time.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/time.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/timer.h b/qemu/roms/ipxe/src/arch/i386/include/bits/timer.h index 50b676b77..f7d86d78c 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/timer.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/timer.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/uaccess.h b/qemu/roms/ipxe/src/arch/i386/include/bits/uaccess.h index 2bb52e021..aac09ba95 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/uaccess.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/uaccess.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bits/umalloc.h b/qemu/roms/ipxe/src/arch/i386/include/bits/umalloc.h index 54fb006f0..113f16fd1 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bits/umalloc.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bits/umalloc.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/bootsector.h b/qemu/roms/ipxe/src/arch/i386/include/bootsector.h index 8730fbfcc..c5d35aae3 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bootsector.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bootsector.h @@ -6,7 +6,7 @@ * x86 bootsector image format */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); extern int call_bootsector ( unsigned int segment, unsigned int offset, unsigned int drive ); diff --git a/qemu/roms/ipxe/src/arch/i386/include/bzimage.h b/qemu/roms/ipxe/src/arch/i386/include/bzimage.h index 7e42e3188..4933ce5b1 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/bzimage.h +++ b/qemu/roms/ipxe/src/arch/i386/include/bzimage.h @@ -1,7 +1,7 @@ #ifndef _BZIMAGE_H #define _BZIMAGE_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/efi/ipxe/dhcp_arch.h b/qemu/roms/ipxe/src/arch/i386/include/efi/ipxe/dhcp_arch.h index 184177219..c17c1ea5e 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/efi/ipxe/dhcp_arch.h +++ b/qemu/roms/ipxe/src/arch/i386/include/efi/ipxe/dhcp_arch.h @@ -4,7 +4,7 @@ * 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. + * 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 @@ -13,7 +13,12 @@ * * 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. + * 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. */ #ifndef _DHCP_ARCH_H @@ -24,7 +29,7 @@ * Architecture-specific DHCP options */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/fakee820.h b/qemu/roms/ipxe/src/arch/i386/include/fakee820.h index 9d00fb670..552b1e48d 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/fakee820.h +++ b/qemu/roms/ipxe/src/arch/i386/include/fakee820.h @@ -1,7 +1,7 @@ #ifndef _FAKEE820_H #define _FAKEE820_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); extern void fake_e820 ( void ); extern void unfake_e820 ( void ); diff --git a/qemu/roms/ipxe/src/arch/i386/include/initrd.h b/qemu/roms/ipxe/src/arch/i386/include/initrd.h index a5659f43c..ddb3e5a45 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/initrd.h +++ b/qemu/roms/ipxe/src/arch/i386/include/initrd.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/int13.h b/qemu/roms/ipxe/src/arch/i386/include/int13.h index e337ca1d1..f82a583c6 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/int13.h +++ b/qemu/roms/ipxe/src/arch/i386/include/int13.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_nap.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_nap.h index 5b684c041..c9b82c1e5 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_nap.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_nap.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef NAP_PCBIOS #define NAP_PREFIX_pcbios diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_reboot.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_reboot.h index a0845328d..3f6df9073 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_reboot.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_reboot.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef REBOOT_PCBIOS #define REBOOT_PREFIX_pcbios diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_sanboot.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_sanboot.h index 689227b70..1a86b7d57 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_sanboot.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_sanboot.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef SANBOOT_PCBIOS #define SANBOOT_PREFIX_pcbios diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_smbios.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_smbios.h index d8c7f648a..9f7f9c8ff 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_smbios.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_smbios.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef SMBIOS_PCBIOS #define SMBIOS_PREFIX_pcbios diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_timer.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_timer.h index f9fc80412..6b88a623c 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_timer.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/bios_timer.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef TIMER_PCBIOS #define TIMER_PREFIX_pcbios @@ -15,7 +15,7 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define TIMER_PREFIX_pcbios __pcbios_ #endif -#include +#include /** * Delay for a fixed number of microseconds @@ -25,9 +25,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); static inline __always_inline void TIMER_INLINE ( pcbios, udelay ) ( unsigned long usecs ) { /* BIOS timer is not high-resolution enough for udelay(), so - * we use timer2 + * we use the 8254 Programmable Interval Timer. */ - timer2_udelay ( usecs ); + pit8254_udelay ( usecs ); } /** diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/errno/pcbios.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/errno/pcbios.h index 3a9eb2495..6312adaa4 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/errno/pcbios.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/errno/pcbios.h @@ -10,7 +10,7 @@ * for the PC-BIOS platform. */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/guestrpc.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/guestrpc.h index 72a0f714f..bc3d85506 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/guestrpc.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/guestrpc.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/memtop_umalloc.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/memtop_umalloc.h index 001648fe5..dee055d16 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/memtop_umalloc.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/memtop_umalloc.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef UMALLOC_MEMTOP #define UMALLOC_PREFIX_memtop diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/msr.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/msr.h index c88e26a39..5705318fd 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/msr.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/msr.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /** * Read model-specific register diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rdtsc_timer.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rdtsc_timer.h index 472e14007..598f4bb08 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rdtsc_timer.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rdtsc_timer.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef TIMER_RDTSC #define TIMER_PREFIX_rdtsc diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_entropy.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_entropy.h index 6c3cf2104..e214745d0 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_entropy.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_entropy.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_time.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_time.h index c0dfe3f88..cb8c7f49e 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_time.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/rtc_time.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifdef TIME_RTC #define TIME_PREFIX_rtc diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/timer2.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/timer2.h deleted file mode 100644 index 322a3ed59..000000000 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/timer2.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef _IPXE_TIMER2_H -#define _IPXE_TIMER2_H - -/** @file - * - * Timer chip control - * - */ - -FILE_LICENCE ( GPL2_OR_LATER ); - -extern void timer2_udelay ( unsigned long usecs ); - -#endif /* _IPXE_TIMER2_H */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/vesafb.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/vesafb.h index 48cd6a7b7..efc8f2cb8 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/vesafb.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/vesafb.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/ipxe/vmware.h b/qemu/roms/ipxe/src/arch/i386/include/ipxe/vmware.h index 2ac65f436..24f60a03a 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/ipxe/vmware.h +++ b/qemu/roms/ipxe/src/arch/i386/include/ipxe/vmware.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/librm.h b/qemu/roms/ipxe/src/arch/i386/include/librm.h index c8ba72b53..a8a578a39 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/librm.h +++ b/qemu/roms/ipxe/src/arch/i386/include/librm.h @@ -1,7 +1,7 @@ #ifndef LIBRM_H #define LIBRM_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /* Segment selectors as used in our protected-mode GDTs. * @@ -170,18 +170,6 @@ extern uint16_t __text16 ( rm_cs ); extern uint16_t __text16 ( rm_ds ); #define rm_ds __use_text16 ( rm_ds ) -/** - * Convert segment:offset address to user buffer - * - * @v segment Real-mode segment - * @v offset Real-mode offset - * @ret buffer User buffer - */ -static inline __always_inline userptr_t -real_to_user ( unsigned int segment, unsigned int offset ) { - return ( phys_to_user ( ( segment << 4 ) + offset ) ); -} - extern uint16_t copy_user_to_rm_stack ( userptr_t data, size_t size ); extern void remove_user_from_rm_stack ( userptr_t data, size_t size ); diff --git a/qemu/roms/ipxe/src/arch/i386/include/limits.h b/qemu/roms/ipxe/src/arch/i386/include/limits.h index 031b6c57a..bb48b75ab 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/limits.h +++ b/qemu/roms/ipxe/src/arch/i386/include/limits.h @@ -1,7 +1,7 @@ #ifndef LIMITS_H #define LIMITS_H 1 -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /* Number of bits in a `char' */ #define CHAR_BIT 8 diff --git a/qemu/roms/ipxe/src/arch/i386/include/memsizes.h b/qemu/roms/ipxe/src/arch/i386/include/memsizes.h index 7b217494a..f115f7574 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/memsizes.h +++ b/qemu/roms/ipxe/src/arch/i386/include/memsizes.h @@ -1,7 +1,7 @@ #ifndef _MEMSIZES_H #define _MEMSIZES_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/multiboot.h b/qemu/roms/ipxe/src/arch/i386/include/multiboot.h index 44614c73a..ae09df6c7 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/multiboot.h +++ b/qemu/roms/ipxe/src/arch/i386/include/multiboot.h @@ -8,7 +8,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h b/qemu/roms/ipxe/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h index a36d9cfa1..e07e4c192 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pcbios/ipxe/dhcp_arch.h @@ -4,7 +4,7 @@ * 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. + * 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 @@ -13,7 +13,12 @@ * * 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. + * 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. */ #ifndef _DHCP_ARCH_H @@ -24,7 +29,7 @@ * Architecture-specific DHCP options */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/pic8259.h b/qemu/roms/ipxe/src/arch/i386/include/pic8259.h deleted file mode 100644 index a07e97d30..000000000 --- a/qemu/roms/ipxe/src/arch/i386/include/pic8259.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Basic support for controlling the 8259 Programmable Interrupt Controllers. - * - * Initially written by Michael Brown (mcb30). - */ - -FILE_LICENCE ( GPL2_OR_LATER ); - -#ifndef PIC8259_H -#define PIC8259_H - -#include - -/* For segoff_t */ -#include "realmode.h" - -#define IRQ_PIC_CUTOFF 8 - -/* 8259 register locations */ -#define PIC1_ICW1 0x20 -#define PIC1_OCW2 0x20 -#define PIC1_OCW3 0x20 -#define PIC1_ICR 0x20 -#define PIC1_IRR 0x20 -#define PIC1_ISR 0x20 -#define PIC1_ICW2 0x21 -#define PIC1_ICW3 0x21 -#define PIC1_ICW4 0x21 -#define PIC1_IMR 0x21 -#define PIC2_ICW1 0xa0 -#define PIC2_OCW2 0xa0 -#define PIC2_OCW3 0xa0 -#define PIC2_ICR 0xa0 -#define PIC2_IRR 0xa0 -#define PIC2_ISR 0xa0 -#define PIC2_ICW2 0xa1 -#define PIC2_ICW3 0xa1 -#define PIC2_ICW4 0xa1 -#define PIC2_IMR 0xa1 - -/* Register command values */ -#define OCW3_ID 0x08 -#define OCW3_READ_IRR 0x03 -#define OCW3_READ_ISR 0x02 -#define ICR_EOI_NON_SPECIFIC 0x20 -#define ICR_EOI_NOP 0x40 -#define ICR_EOI_SPECIFIC 0x60 -#define ICR_EOI_SET_PRIORITY 0xc0 - -/* Macros to enable/disable IRQs */ -#define IMR_REG(x) ( (x) < IRQ_PIC_CUTOFF ? PIC1_IMR : PIC2_IMR ) -#define IMR_BIT(x) ( 1 << ( (x) % IRQ_PIC_CUTOFF ) ) -#define irq_enabled(x) ( ( inb ( IMR_REG(x) ) & IMR_BIT(x) ) == 0 ) -#define enable_irq(x) outb ( inb( IMR_REG(x) ) & ~IMR_BIT(x), IMR_REG(x) ) -#define disable_irq(x) outb ( inb( IMR_REG(x) ) | IMR_BIT(x), IMR_REG(x) ) - -/* Macros for acknowledging IRQs */ -#define ICR_REG( irq ) ( (irq) < IRQ_PIC_CUTOFF ? PIC1_ICR : PIC2_ICR ) -#define ICR_VALUE( irq ) ( (irq) % IRQ_PIC_CUTOFF ) -#define CHAINED_IRQ 2 - -/* Utility macros to convert IRQ numbers to INT numbers and INT vectors */ -#define IRQ_INT( irq ) ( ( ( (irq) - IRQ_PIC_CUTOFF ) ^ 0x70 ) & 0x7f ) - -/* Other constants */ -#define IRQ_MAX 15 -#define IRQ_NONE -1U - -/* Function prototypes - */ -void send_eoi ( unsigned int irq ); - -#endif /* PIC8259_H */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/pnpbios.h b/qemu/roms/ipxe/src/arch/i386/include/pnpbios.h index 4c20e73ed..d14873700 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pnpbios.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pnpbios.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /* BIOS segment address */ #define BIOS_SEG 0xf000 diff --git a/qemu/roms/ipxe/src/arch/i386/include/pxe.h b/qemu/roms/ipxe/src/arch/i386/include/pxe.h index b95b0cce5..66d752683 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pxe.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pxe.h @@ -1,7 +1,7 @@ #ifndef PXE_H #define PXE_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include "pxe_types.h" #include "pxe_error.h" diff --git a/qemu/roms/ipxe/src/arch/i386/include/pxe_api.h b/qemu/roms/ipxe/src/arch/i386/include/pxe_api.h index e4396efb2..3110d26da 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pxe_api.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pxe_api.h @@ -17,6 +17,10 @@ * 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. + * * As an alternative, at your option, you may use this file under the * following terms, known as the "MIT license": * @@ -49,7 +53,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include "pxe_types.h" diff --git a/qemu/roms/ipxe/src/arch/i386/include/pxe_call.h b/qemu/roms/ipxe/src/arch/i386/include/pxe_call.h index 45af46549..cbd548318 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pxe_call.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pxe_call.h @@ -6,7 +6,7 @@ * PXE API entry point */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/pxe_error.h b/qemu/roms/ipxe/src/arch/i386/include/pxe_error.h index a1398cbd4..51298e665 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pxe_error.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pxe_error.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /** * @defgroup pxeerrors PXE error codes diff --git a/qemu/roms/ipxe/src/arch/i386/include/pxe_types.h b/qemu/roms/ipxe/src/arch/i386/include/pxe_types.h index db8214591..483666e33 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/pxe_types.h +++ b/qemu/roms/ipxe/src/arch/i386/include/pxe_types.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include /* PXE status codes */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/realmode.h b/qemu/roms/ipxe/src/arch/i386/include/realmode.h index dafc5a32a..4defd3b97 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/realmode.h +++ b/qemu/roms/ipxe/src/arch/i386/include/realmode.h @@ -10,7 +10,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /* * Declaration of variables in .data16 @@ -64,6 +64,18 @@ FILE_LICENCE ( GPL2_OR_LATER ); * assembler output to make sure that it's doing the right thing. */ +/** + * Convert segment:offset address to user buffer + * + * @v segment Real-mode segment + * @v offset Real-mode offset + * @ret buffer User buffer + */ +static inline __always_inline userptr_t +real_to_user ( unsigned int segment, unsigned int offset ) { + return ( phys_to_user ( ( segment << 4 ) + offset ) ); +} + /** * Copy data to base memory * diff --git a/qemu/roms/ipxe/src/arch/i386/include/registers.h b/qemu/roms/ipxe/src/arch/i386/include/registers.h index 06d236524..d9aa3c376 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/registers.h +++ b/qemu/roms/ipxe/src/arch/i386/include/registers.h @@ -10,7 +10,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/rtc.h b/qemu/roms/ipxe/src/arch/i386/include/rtc.h index 2a6abbae5..6294b63e3 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/rtc.h +++ b/qemu/roms/ipxe/src/arch/i386/include/rtc.h @@ -13,7 +13,7 @@ * http://wiki.osdev.org/CMOS */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/sdi.h b/qemu/roms/ipxe/src/arch/i386/include/sdi.h index fc486402d..806c3f194 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/sdi.h +++ b/qemu/roms/ipxe/src/arch/i386/include/sdi.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); /** SDI image header */ struct sdi_header { diff --git a/qemu/roms/ipxe/src/arch/i386/include/setjmp.h b/qemu/roms/ipxe/src/arch/i386/include/setjmp.h index 5d3c11b69..fe1a9ef4d 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/setjmp.h +++ b/qemu/roms/ipxe/src/arch/i386/include/setjmp.h @@ -1,40 +1,50 @@ -#ifndef ETHERBOOT_SETJMP_H -#define ETHERBOOT_SETJMP_H +#ifndef _SETJMP_H +#define _SETJMP_H -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include /** A jump buffer */ typedef struct { + /** Saved return address */ uint32_t retaddr; + /** Saved stack pointer */ + uint32_t stack; + /** Saved %ebx */ uint32_t ebx; - uint32_t esp; - uint32_t ebp; + /** Saved %esi */ uint32_t esi; + /** Saved %edi */ uint32_t edi; + /** Saved %ebp */ + uint32_t ebp; } jmp_buf[1]; /** A real-mode-extended jump buffer */ typedef struct { + /** Jump buffer */ jmp_buf env; - uint16_t rm_ss; - uint16_t rm_sp; + /** Real-mode stack pointer */ + segoff_t rm_stack; } rmjmp_buf[1]; -extern int __asmcall setjmp ( jmp_buf env ); -extern void __asmcall longjmp ( jmp_buf env, int val ); +extern int __asmcall __attribute__ (( returns_twice )) +setjmp ( jmp_buf env ); + +extern void __asmcall __attribute__ (( noreturn )) +longjmp ( jmp_buf env, int val ); -#define rmsetjmp( _env ) ( { \ - (_env)->rm_ss = rm_ss; \ - (_env)->rm_sp = rm_sp; \ - setjmp ( (_env)->env ); } ) \ +#define rmsetjmp( _env ) ( { \ + (_env)->rm_stack.segment = rm_ss; \ + (_env)->rm_stack.offset = rm_sp; \ + setjmp ( (_env)->env ); } ) \ -#define rmlongjmp( _env, _val ) do { \ - rm_ss = (_env)->rm_ss; \ - rm_sp = (_env)->rm_sp; \ - longjmp ( (_env)->env, (_val) ); \ +#define rmlongjmp( _env, _val ) do { \ + rm_ss = (_env)->rm_stack.segment; \ + rm_sp = (_env)->rm_stack.offset; \ + longjmp ( (_env)->env, (_val) ); \ } while ( 0 ) -#endif /* ETHERBOOT_SETJMP_H */ +#endif /* _SETJMP_H */ diff --git a/qemu/roms/ipxe/src/arch/i386/include/undi.h b/qemu/roms/ipxe/src/arch/i386/include/undi.h index 325fcbbf9..7a5624f93 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/undi.h +++ b/qemu/roms/ipxe/src/arch/i386/include/undi.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #ifndef ASSEMBLY diff --git a/qemu/roms/ipxe/src/arch/i386/include/undiload.h b/qemu/roms/ipxe/src/arch/i386/include/undiload.h index 426830e8d..235e7a79e 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/undiload.h +++ b/qemu/roms/ipxe/src/arch/i386/include/undiload.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); struct undi_device; struct undi_rom; diff --git a/qemu/roms/ipxe/src/arch/i386/include/undinet.h b/qemu/roms/ipxe/src/arch/i386/include/undinet.h index c3c17c11a..2798c4466 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/undinet.h +++ b/qemu/roms/ipxe/src/arch/i386/include/undinet.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); struct undi_device; diff --git a/qemu/roms/ipxe/src/arch/i386/include/undipreload.h b/qemu/roms/ipxe/src/arch/i386/include/undipreload.h index de9b8fb52..57f493cec 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/undipreload.h +++ b/qemu/roms/ipxe/src/arch/i386/include/undipreload.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include #include diff --git a/qemu/roms/ipxe/src/arch/i386/include/undirom.h b/qemu/roms/ipxe/src/arch/i386/include/undirom.h index 86d7077b5..1c530118d 100644 --- a/qemu/roms/ipxe/src/arch/i386/include/undirom.h +++ b/qemu/roms/ipxe/src/arch/i386/include/undirom.h @@ -7,7 +7,7 @@ * */ -FILE_LICENCE ( GPL2_OR_LATER ); +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #include -- cgit 1.2.3-korg