about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/libx86
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libx86')
-rw-r--r--nixpkgs/pkgs/development/libraries/libx86/constants.patch20
-rw-r--r--nixpkgs/pkgs/development/libraries/libx86/default.nix29
-rw-r--r--nixpkgs/pkgs/development/libraries/libx86/non-x86.patch38
-rw-r--r--nixpkgs/pkgs/development/libraries/libx86/src-for-default.nix7
-rw-r--r--nixpkgs/pkgs/development/libraries/libx86/src-info-for-default.nix4
5 files changed, 98 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libx86/constants.patch b/nixpkgs/pkgs/development/libraries/libx86/constants.patch
new file mode 100644
index 000000000000..10fc829d6743
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libx86/constants.patch
@@ -0,0 +1,20 @@
+--- libx86/lrmi.c	2008-09-06 12:24:36.070136428 +0200
++++ libx86/lrmi.c	2008-09-06 12:28:10.584287458 +0200
+@@ -56,5 +56,17 @@
+ 
+ #if defined(__linux__)
++#ifndef TF_MASK
++#define TF_MASK X86_EFLAGS_TF
++#endif
++#ifndef IF_MASK
++#define IF_MASK X86_EFLAGS_IF
++#endif
++#ifndef IOPL_MASK
++#define IOPL_MASK X86_EFLAGS_IOPL
++#endif
++#ifndef VIF_MASK
++#define VIF_MASK X86_EFLAGS_VIF
++#endif
+ #define DEFAULT_VM86_FLAGS 	(IF_MASK | IOPL_MASK)
+ #elif defined(__NetBSD__) || defined(__FreeBSD__)
+ #define DEFAULT_VM86_FLAGS  (PSL_I | PSL_IOPL)
diff --git a/nixpkgs/pkgs/development/libraries/libx86/default.nix b/nixpkgs/pkgs/development/libraries/libx86/default.nix
new file mode 100644
index 000000000000..1abefa8f4374
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libx86/default.nix
@@ -0,0 +1,29 @@
+{ lib, stdenv, fetchurl }:
+
+stdenv.mkDerivation rec {
+  pname = "libx86";
+  version = "1.1";
+  src = fetchurl {
+    url = "https://www.codon.org.uk/~mjg59/libx86/downloads/${pname}-${version}.tar.gz";
+    sha256 = "0j6h6bc02c6qi0q7c1ncraz4d1hkm5936r35rfsp4x1jrc233wav";
+  };
+  patches = [./constants.patch ./non-x86.patch ];
+
+  # using BACKEND=x86emu on 64bit systems fixes:
+  #  http://www.mail-archive.com/suspend-devel@lists.sourceforge.net/msg02355.html
+  makeFlags = [
+    "DESTDIR=$(out)"
+  ] ++ lib.optional (!stdenv.isi686) "BACKEND=x86emu";
+
+  preBuild = ''
+    sed -i lrmi.c -e 's@defined(__i386__)@(defined(__i386__) || defined(__x86_64__))@'
+    sed -e s@/usr@@ -i Makefile
+  '';
+
+  meta = with lib; {
+    description = "Real-mode x86 code emulator";
+    maintainers = with maintainers; [ raskin ];
+    platforms = [ "x86_64-linux" "i686-linux" ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/development/libraries/libx86/non-x86.patch b/nixpkgs/pkgs/development/libraries/libx86/non-x86.patch
new file mode 100644
index 000000000000..286057c4ba87
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libx86/non-x86.patch
@@ -0,0 +1,38 @@
+diff -Naur libx86-1.1+ds1.orig/Makefile libx86-1.1+ds1/Makefile
+--- libx86-1.1+ds1.orig/Makefile	2008-05-19 12:28:59.000000000 +0300
++++ libx86-1.1+ds1/Makefile	2012-02-20 01:32:03.750068423 +0200
+@@ -5,6 +5,7 @@
+ ifeq ($(BACKEND),x86emu)
+ 	OBJECTS += thunk.o x86emu/decode.o x86emu/debug.o x86emu/fpu.o \
+ 	x86emu/ops.o x86emu/ops2.o x86emu/prim_ops.o x86emu/sys.o
++	CFLAGS += -DX86EMU -fno-delete-null-pointer-checks
+ else
+ 	OBJECTS += lrmi.o
+ endif
+diff -Naur libx86-1.1+ds1.orig/thunk.c libx86-1.1+ds1/thunk.c
+--- libx86-1.1+ds1.orig/thunk.c	2008-04-03 03:48:00.000000000 +0300
++++ libx86-1.1+ds1/thunk.c	2012-02-20 01:12:56.468820192 +0200
+@@ -32,6 +32,7 @@
+ #define TRUE 1
+ #define FALSE 0
+ 
++#ifndef X86EMU
+ #define __BUILDIO(bwl,bw,type) \
+ static inline void out##bwl##_local(unsigned long port, unsigned type value) {        __asm__ __volatile__("out" #bwl " %" #bw "0, %w1" : : "a"(value), "Nd"(port)); \
+ }\
+@@ -44,6 +45,15 @@
+ __BUILDIO(b,b,char)
+ __BUILDIO(w,w,short)
+ __BUILDIO(l,,int)
++#else
++/* use libc functions */
++#define inb_local inb
++#define inw_local inw
++#define inl_local inl
++#define outb_local outb
++#define outw_local outw
++#define outl_local outl
++#endif /* X86EMU */
+ 
+ 
+ char *mmap_addr = SHMERRORPTR;
diff --git a/nixpkgs/pkgs/development/libraries/libx86/src-for-default.nix b/nixpkgs/pkgs/development/libraries/libx86/src-for-default.nix
new file mode 100644
index 000000000000..b7e432d8109c
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libx86/src-for-default.nix
@@ -0,0 +1,7 @@
+rec {
+   pname="libx86";
+   version="1.1";
+   hash="0j6h6bc02c6qi0q7c1ncraz4d1hkm5936r35rfsp4x1jrc233wav";
+   url="http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-${version}.tar.gz";
+   advertisedUrl="http://www.codon.org.uk/~mjg59/libx86/downloads/libx86-${version}.tar.gz";
+}
diff --git a/nixpkgs/pkgs/development/libraries/libx86/src-info-for-default.nix b/nixpkgs/pkgs/development/libraries/libx86/src-info-for-default.nix
new file mode 100644
index 000000000000..9861e21f6559
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/libx86/src-info-for-default.nix
@@ -0,0 +1,4 @@
+{
+  downloadPage = "http://www.codon.org.uk/~mjg59/libx86/downloads/?C=M;O=D";
+  baseName = "libx86";
+}