gnu: picprog: Fix non-Intel support.
* gnu/packages/patches/picprog-non-intel-support.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/embedded.scm (picprog)[source]: Add patch. [arguments]: Skip building the 'testport' binary.
This commit is contained in:
parent
981bccf11c
commit
316fd29f9b
|
@ -968,6 +968,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/perl-module-pluggable-search.patch \
|
||||
%D%/packages/patches/perl-reproducible-build-date.patch \
|
||||
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
|
||||
%D%/packages/patches/picprog-non-intel-support.patch \
|
||||
%D%/packages/patches/pidgin-add-search-path.patch \
|
||||
%D%/packages/patches/pinball-const-fix.patch \
|
||||
%D%/packages/patches/pinball-cstddef.patch \
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
|
||||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -944,7 +945,8 @@ SPI, I2C, JTAG.")
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1r04hg1n3v2jf915qr05la3q9cxy7a5jnh9cc98j04lh6c9p4x85"))))
|
||||
"1r04hg1n3v2jf915qr05la3q9cxy7a5jnh9cc98j04lh6c9p4x85"))
|
||||
(patches (search-patches "picprog-non-intel-support.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; No tests exist.
|
||||
|
@ -954,7 +956,8 @@ SPI, I2C, JTAG.")
|
|||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "Makefile"
|
||||
(("/usr/local") (assoc-ref outputs "out"))
|
||||
((" -o 0 -g 0 ") " "))
|
||||
((" -o 0 -g 0 ") " ")
|
||||
(("testport") ""))
|
||||
#t))
|
||||
(add-before 'install 'mkdir
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
https://sources.debian.org/data/main/p/picprog/1.9.1-3/debian/patches/20_iopl.patch
|
||||
|
||||
Description: Avoid some functions in some architectures
|
||||
Upstream uses iopl() function and other architecture-dependent
|
||||
codes. This patch adds building switches to avoid them in
|
||||
some architectures.
|
||||
Author: Koichi Akabe <vbkaisetsu@gmail.com>
|
||||
Last-Update: 2011-11-30
|
||||
|
||||
--- picprog-1.9.1.orig/picport.cc
|
||||
+++ picprog-1.9.1/picport.cc
|
||||
@@ -38,7 +38,12 @@
|
||||
#include <ctime>
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
-#include <sys/io.h>
|
||||
+
|
||||
+#if defined(__i386__) || defined(__x86_64__)
|
||||
+ #include <sys/io.h>
|
||||
+ #define HAVE_IOPL
|
||||
+#endif
|
||||
+
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
@@ -160,8 +165,12 @@
|
||||
// Not root. Cannot use realtime scheduling.
|
||||
use_nanosleep = 0;
|
||||
}
|
||||
+#ifdef HAVE_IOPL
|
||||
if (iopl (3))
|
||||
disable_interrupts = 0;
|
||||
+#else
|
||||
+ disable_interrupts = 0;
|
||||
+#endif
|
||||
|
||||
#ifdef CPU_SETSIZE
|
||||
// When computing the delay loops, we do not want the cpu's to change.
|
||||
@@ -403,13 +412,17 @@
|
||||
{
|
||||
struct timeval tv1, tv2;
|
||||
gettimeofday (&tv1, 0);
|
||||
+#if defined(__i386__) or defined(__x86_64__)
|
||||
if (tsc_1000ns > 1 && disable_interrupts)
|
||||
asm volatile("pushf; cli");
|
||||
+#endif
|
||||
set_clock_data (1, b); // set data, clock up
|
||||
delay (cable_delay);
|
||||
set_clock_data (0, b); // clock down
|
||||
+#if defined(__i386__) or defined(__x86_64__)
|
||||
if (tsc_1000ns > 1 && disable_interrupts)
|
||||
asm volatile("popf");
|
||||
+#endif
|
||||
gettimeofday (&tv2, 0);
|
||||
|
||||
// We may have spent a long time in an interrupt or in another task
|
||||
@@ -428,13 +441,17 @@
|
||||
{
|
||||
struct timeval tv1, tv2;
|
||||
gettimeofday (&tv1, 0);
|
||||
+#if defined(__i386__) or defined(__x86_64__)
|
||||
if (tsc_1000ns > 1 && disable_interrupts)
|
||||
asm volatile("pushf; cli");
|
||||
+#endif
|
||||
set_clock_data (1, 1); // clock up
|
||||
delay (cable_delay);
|
||||
set_clock_data (0, 1); // set data up, clock down
|
||||
+#if defined(__i386__) or defined(__x86_64__)
|
||||
if (tsc_1000ns > 1 && disable_interrupts)
|
||||
asm volatile("popf");
|
||||
+#endif
|
||||
gettimeofday (&tv2, 0);
|
||||
|
||||
// We may have spent a long time in an interrupt or in another task
|
Loading…
Reference in New Issue