summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux-4.02/gpxe/src/arch/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux-4.02/gpxe/src/arch/x86_64')
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile41
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile.efi14
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/byteswap.h22
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/compiler.h14
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/endian.h6
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/errfile.h11
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/io.h10
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/nap.h12
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/smbios.h10
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/stdint.h21
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/timer.h10
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/uaccess.h10
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/umalloc.h10
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/gdbmach.h51
-rw-r--r--contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/limits.h59
15 files changed, 301 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile
new file mode 100644
index 0000000..d2c2ff5
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile
@@ -0,0 +1,41 @@
+# Code size reduction.
+#
+CFLAGS += -fstrength-reduce -fomit-frame-pointer
+
+# Code size reduction. gcc3 needs a different syntax to gcc2 if you
+# want to avoid spurious warnings.
+#
+CFLAGS += -falign-jumps=1 -falign-loops=1 -falign-functions=1
+
+# Use %rip-relative addressing wherever possible.
+#
+CFLAGS += -fpie
+
+# Force 64-bit code
+#
+CFLAGS += -m64
+ASFLAGS += --64
+LDFLAGS += -m elf_x86_64
+
+# EFI requires -fshort-wchar, and nothing else currently uses wchar_t
+#
+CFLAGS += -fshort-wchar
+
+# We need to undefine the default macro "i386" when compiling .S
+# files, otherwise ".arch i386" translates to ".arch 1"...
+#
+CFLAGS += -Ui386
+
+# x86_64-specific directories containing source files
+#
+SRCDIRS += arch/x86_64/prefix
+
+# Include common x86 Makefile
+#
+MAKEDEPS += arch/x86/Makefile
+include arch/x86/Makefile
+
+# Include platform-specific Makefile
+#
+MAKEDEPS += arch/x86_64/Makefile.$(PLATFORM)
+include arch/x86_64/Makefile.$(PLATFORM)
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile.efi b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile.efi
new file mode 100644
index 0000000..26b7127
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/Makefile.efi
@@ -0,0 +1,14 @@
+# -*- makefile -*- : Force emacs to use Makefile mode
+
+# EFI probably doesn't guarantee us a red zone, so let's not rely on it.
+#
+CFLAGS += -mno-red-zone
+
+# Specify EFI image builder
+#
+ELF2EFI = $(ELF2EFI64)
+
+# Include generic EFI Makefile
+#
+MAKEDEPS += arch/x86/Makefile.efi
+include arch/x86/Makefile.efi
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/byteswap.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/byteswap.h
new file mode 100644
index 0000000..9ed85e8
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/byteswap.h
@@ -0,0 +1,22 @@
+#ifndef _BITS_BYTESWAP_H
+#define _BITS_BYTESWAP_H
+
+static inline __attribute__ (( always_inline, const )) uint16_t
+__bswap_variable_16 ( uint16_t x ) {
+ __asm__ ( "xchgb %b0,%h0" : "=Q" ( x ) : "0" ( x ) );
+ return x;
+}
+
+static inline __attribute__ (( always_inline, const )) uint32_t
+__bswap_variable_32 ( uint32_t x ) {
+ __asm__ ( "bswapl %k0" : "=r" ( x ) : "0" ( x ) );
+ return x;
+}
+
+static inline __attribute__ (( always_inline, const )) uint64_t
+__bswap_variable_64 ( uint64_t x ) {
+ __asm__ ( "bswapq %q0" : "=r" ( x ) : "0" ( x ) );
+ return x;
+}
+
+#endif /* _BITS_BYTESWAP_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/compiler.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/compiler.h
new file mode 100644
index 0000000..51a7eaa
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/compiler.h
@@ -0,0 +1,14 @@
+#ifndef _BITS_COMPILER_H
+#define _BITS_COMPILER_H
+
+#ifndef ASSEMBLY
+
+/** Declare a function with standard calling conventions */
+#define __asmcall __attribute__ (( regparm(0) ))
+
+/** Declare a function with libgcc implicit linkage */
+#define __libgcc
+
+#endif /* ASSEMBLY */
+
+#endif /* _BITS_COMPILER_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/endian.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/endian.h
new file mode 100644
index 0000000..413e702
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/endian.h
@@ -0,0 +1,6 @@
+#ifndef ETHERBOOT_BITS_ENDIAN_H
+#define ETHERBOOT_BITS_ENDIAN_H
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+
+#endif /* ETHERBOOT_BITS_ENDIAN_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/errfile.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/errfile.h
new file mode 100644
index 0000000..dcda26b
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/errfile.h
@@ -0,0 +1,11 @@
+#ifndef _BITS_ERRFILE_H
+#define _BITS_ERRFILE_H
+
+/**
+ * @addtogroup errfile Error file identifiers
+ * @{
+ */
+
+/** @} */
+
+#endif /* _BITS_ERRFILE_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/io.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/io.h
new file mode 100644
index 0000000..921fdcc
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/io.h
@@ -0,0 +1,10 @@
+#ifndef _BITS_IO_H
+#define _BITS_IO_H
+
+/** @file
+ *
+ * x86_64-specific I/O API implementations
+ *
+ */
+
+#endif /* _BITS_IO_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/nap.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/nap.h
new file mode 100644
index 0000000..0a0c8a2
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/nap.h
@@ -0,0 +1,12 @@
+#ifndef _BITS_NAP_H
+#define _BITS_NAP_H
+
+/** @file
+ *
+ * x86_64-specific CPU sleeping API implementations
+ *
+ */
+
+#include <gpxe/efi/efix86_nap.h>
+
+#endif /* _BITS_MAP_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/smbios.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/smbios.h
new file mode 100644
index 0000000..2f0118d
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/smbios.h
@@ -0,0 +1,10 @@
+#ifndef _BITS_SMBIOS_H
+#define _BITS_SMBIOS_H
+
+/** @file
+ *
+ * i386-specific SMBIOS API implementations
+ *
+ */
+
+#endif /* _BITS_SMBIOS_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/stdint.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/stdint.h
new file mode 100644
index 0000000..9eb72e9
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/stdint.h
@@ -0,0 +1,21 @@
+#ifndef _BITS_STDINT_H
+#define _BITS_STDINT_H
+
+typedef __SIZE_TYPE__ size_t;
+typedef signed long ssize_t;
+typedef signed long off_t;
+
+typedef unsigned char uint8_t;
+typedef unsigned short uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned long long uint64_t;
+
+typedef signed char int8_t;
+typedef signed short int16_t;
+typedef signed int int32_t;
+typedef signed long long int64_t;
+
+typedef unsigned long physaddr_t;
+typedef unsigned long intptr_t;
+
+#endif /* _BITS_STDINT_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/timer.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/timer.h
new file mode 100644
index 0000000..dfa6c27
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/timer.h
@@ -0,0 +1,10 @@
+#ifndef _BITS_TIMER_H
+#define _BITS_TIMER_H
+
+/** @file
+ *
+ * x86_64-specific timer API implementations
+ *
+ */
+
+#endif /* _BITS_TIMER_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/uaccess.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/uaccess.h
new file mode 100644
index 0000000..4558292
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/uaccess.h
@@ -0,0 +1,10 @@
+#ifndef _BITS_UACCESS_H
+#define _BITS_UACCESS_H
+
+/** @file
+ *
+ * x86_64-specific user access API implementations
+ *
+ */
+
+#endif /* _BITS_UACCESS_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/umalloc.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/umalloc.h
new file mode 100644
index 0000000..12bf949
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/bits/umalloc.h
@@ -0,0 +1,10 @@
+#ifndef _BITS_UMALLOC_H
+#define _BITS_UMALLOC_H
+
+/** @file
+ *
+ * x86_64-specific user memory allocation API implementations
+ *
+ */
+
+#endif /* _BITS_UMALLOC_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/gdbmach.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/gdbmach.h
new file mode 100644
index 0000000..fcf8e94
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/gdbmach.h
@@ -0,0 +1,51 @@
+#ifndef GDBMACH_H
+#define GDBMACH_H
+
+/** @file
+ *
+ * GDB architecture specifics
+ *
+ * This file declares functions for manipulating the machine state and
+ * debugging context.
+ *
+ */
+
+#include <stdint.h>
+
+typedef unsigned long gdbreg_t;
+
+/* The register snapshot, this must be in sync with interrupt handler and the
+ * GDB protocol. */
+enum {
+ // STUB: don't expect this to work!
+ GDBMACH_EIP,
+ GDBMACH_EFLAGS,
+ GDBMACH_NREGS,
+ GDBMACH_SIZEOF_REGS = GDBMACH_NREGS * sizeof ( gdbreg_t )
+};
+
+/* Breakpoint types */
+enum {
+ GDBMACH_BPMEM,
+ GDBMACH_BPHW,
+ GDBMACH_WATCH,
+ GDBMACH_RWATCH,
+ GDBMACH_AWATCH,
+};
+
+static inline void gdbmach_set_pc ( gdbreg_t *regs, gdbreg_t pc ) {
+ regs [ GDBMACH_EIP ] = pc;
+}
+
+static inline void gdbmach_set_single_step ( gdbreg_t *regs, int step ) {
+ regs [ GDBMACH_EFLAGS ] &= ~( 1 << 8 ); /* Trace Flag (TF) */
+ regs [ GDBMACH_EFLAGS ] |= ( step << 8 );
+}
+
+static inline void gdbmach_breakpoint ( void ) {
+ __asm__ __volatile__ ( "int $3\n" );
+}
+
+extern int gdbmach_set_breakpoint ( int type, unsigned long addr, size_t len, int enable );
+
+#endif /* GDBMACH_H */
diff --git a/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/limits.h b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/limits.h
new file mode 100644
index 0000000..8cf87b4
--- /dev/null
+++ b/contrib/syslinux-4.02/gpxe/src/arch/x86_64/include/limits.h
@@ -0,0 +1,59 @@
+#ifndef LIMITS_H
+#define LIMITS_H 1
+
+/* Number of bits in a `char' */
+#define CHAR_BIT 8
+
+/* Minimum and maximum values a `signed char' can hold */
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+
+/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */
+#define UCHAR_MAX 255
+
+/* Minimum and maximum values a `char' can hold */
+#define CHAR_MIN SCHAR_MIN
+#define CHAR_MAX SCHAR_MAX
+
+/* Minimum and maximum values a `signed short int' can hold */
+#define SHRT_MIN (-32768)
+#define SHRT_MAX 32767
+
+/* Maximum value an `unsigned short' can hold. (Minimum is 0.) */
+#define USHRT_MAX 65535
+
+
+/* Minimum and maximum values a `signed int' can hold */
+#define INT_MIN (-INT_MAX - 1)
+#define INT_MAX 2147483647
+
+/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
+#define UINT_MAX 4294967295U
+
+
+/* Minimum and maximum values a `signed int' can hold */
+#define INT_MAX 2147483647
+#define INT_MIN (-INT_MAX - 1)
+
+
+/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
+#define UINT_MAX 4294967295U
+
+
+/* Minimum and maximum values a `signed long' can hold */
+#define LONG_MAX 9223372036854775807L
+#define LONG_MIN (-LONG_MAX - 1L)
+
+/* Maximum value an `unsigned long' can hold. (Minimum is 0.) */
+#define ULONG_MAX 18446744073709551615UL
+
+/* Minimum and maximum values a `signed long long' can hold */
+#define LLONG_MAX 9223372036854775807LL
+#define LLONG_MIN (-LONG_MAX - 1LL)
+
+
+/* Maximum value an `unsigned long long' can hold. (Minimum is 0.) */
+#define ULLONG_MAX 18446744073709551615ULL
+
+
+#endif /* LIMITS_H */