summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Andrzej Telszewski2024-04-26 00:39:50 +0200
committer Willy Sudiarto Raharjo2024-04-26 01:06:23 +0200
commit5e840e1d30c4058f002c439eb0dc725c568f854f (patch)
treeaed673ca608261756130dd93e837fc9c28f0282f
parent8806867c9bdac7b4964c49cccbdebb360787e8a5 (diff)
downloadslackbuilds-5e840e1d30c4058f002c439eb0dc725c568f854f.tar.gz
misc/sigrok-firmware-fx2lafw: Fix building with SDCC >= 4.2.3
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
-rw-r--r--misc/sigrok-firmware-fx2lafw/patches/00-fx2lafw__silence_integer_overflow_compile_warnings.patch26
-rw-r--r--misc/sigrok-firmware-fx2lafw/patches/01-fx2lib__Update___interrupt_syntax_for_sdcc_4.2.3.patch575
-rw-r--r--misc/sigrok-firmware-fx2lafw/patches/02-fx2lafw__Update___interrupt_syntax_for_sdcc_4.2.3.patch108
-rw-r--r--misc/sigrok-firmware-fx2lafw/patches/03-fx2lafw__Update___at_syntax_for_sdcc_4.2.3.patch300
-rw-r--r--misc/sigrok-firmware-fx2lafw/patches/04-fx2lib_fix_SDCC_warning_283.patch686
-rw-r--r--misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.SlackBuild23
-rw-r--r--misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.info2
7 files changed, 1708 insertions, 12 deletions
diff --git a/misc/sigrok-firmware-fx2lafw/patches/00-fx2lafw__silence_integer_overflow_compile_warnings.patch b/misc/sigrok-firmware-fx2lafw/patches/00-fx2lafw__silence_integer_overflow_compile_warnings.patch
new file mode 100644
index 0000000000..57143d0f91
--- /dev/null
+++ b/misc/sigrok-firmware-fx2lafw/patches/00-fx2lafw__silence_integer_overflow_compile_warnings.patch
@@ -0,0 +1,26 @@
+From: Gerhard Sittig <redacted>
+Date: Mon, 22 Feb 2021 19:17:02 +0000 (+0100)
+Subject: fx2lafw: silence integer overflow compile warnings
+X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=commitdiff_plain;h=61f1c8fc33ce959f167f6bcb5ba3b0959d60b038
+
+fx2lafw: silence integer overflow compile warnings
+
+Explicitly mark literals for control bitfield values as unsigned, to
+avoid compiler warnings when the MSB gets set in assignments to a byte.
+This kind of follows up to commit f6ef2ff72979 after commit b283ba837a11
+re-introduced the warning.
+---
+
+diff --git a/gpif-acquisition.c b/gpif-acquisition.c
+index 96476ccc..c6ba52a0 100644
+--- a/gpif-acquisition.c
++++ b/gpif-acquisition.c
+@@ -161,7 +161,7 @@ static void gpif_make_data_dp_state(volatile BYTE *pSTATE)
+ * BRANCH
+ * Branch to IDLE if condition is true, back to S0 otherwise.
+ */
+- pSTATE[0] = (1 << 7) | (7 << 3) | (0 << 0);
++ pSTATE[0] = (1u << 7) | (7u << 3) | (0u << 0);
+
+ /*
+ * OPCODE
diff --git a/misc/sigrok-firmware-fx2lafw/patches/01-fx2lib__Update___interrupt_syntax_for_sdcc_4.2.3.patch b/misc/sigrok-firmware-fx2lafw/patches/01-fx2lib__Update___interrupt_syntax_for_sdcc_4.2.3.patch
new file mode 100644
index 0000000000..72387ac5d7
--- /dev/null
+++ b/misc/sigrok-firmware-fx2lafw/patches/01-fx2lib__Update___interrupt_syntax_for_sdcc_4.2.3.patch
@@ -0,0 +1,575 @@
+From: Matthew Cengia <redacted>
+Date: Tue, 15 Aug 2023 00:38:34 +0000 (+1000)
+Subject: fx2lib: Update __interrupt syntax for sdcc>=4.2.3
+X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=commitdiff_plain;h=5aab87d358a4585a10ad89277bb88ad139077abd
+
+fx2lib: Update __interrupt syntax for sdcc>=4.2.3
+
+The SDCC user manual https://sdcc.sourceforge.net/doc/sdccman.pdf
+section 1.5 "Compatibility with previous versions" on page 11 states:
+
+> In 4.2.3, support for non-parenthesized arguments to __using and
+> __interrupt was dropped.
+
+Adjust the imported fx2lib source files to unbreak compilation with
+more recent SDCC versions.
+---
+
+diff --git a/fx2lib/include/autovector.h b/fx2lib/include/autovector.h
+index 495a3126..38f80fcd 100644
+--- a/fx2lib/include/autovector.h
++++ b/fx2lib/include/autovector.h
+@@ -172,49 +172,49 @@ typedef enum {
+ // you must include the predef of these in the file with your main
+ // so lets just define them here
+
+-void sudav_isr() __interrupt SUDAV_ISR;
+-void sof_isr() __interrupt SOF_ISR;
+-void sutok_isr() __interrupt SUTOK_ISR;
+-void suspend_isr() __interrupt SUSPEND_ISR;
+-void usbreset_isr() __interrupt USBRESET_ISR;
+-void hispeed_isr() __interrupt HISPEED_ISR;
+-void ep0ack_isr() __interrupt EP0ACK_ISR;
+-void ep0in_isr() __interrupt EP0IN_ISR;
+-void ep0out_isr() __interrupt EP0OUT_ISR;
+-void ep1in_isr() __interrupt EP1IN_ISR;
+-void ep1out_isr() __interrupt EP1OUT_ISR;
+-void ep2_isr() __interrupt EP2_ISR;
+-void ep4_isr() __interrupt EP4_ISR;
+-void ep6_isr() __interrupt EP6_ISR;
+-void ep8_isr() __interrupt EP8_ISR;
+-void ibn_isr() __interrupt IBN_ISR;
+-void ep0ping_isr() __interrupt EP0PING_ISR;
+-void ep1ping_isr() __interrupt EP1PING_ISR;
+-void ep2ping_isr() __interrupt EP2PING_ISR;
+-void ep4ping_isr() __interrupt EP4PING_ISR;
+-void ep6ping_isr() __interrupt EP6PING_ISR;
+-void ep8ping_isr() __interrupt EP8PING_ISR;
+-void errlimit_isr() __interrupt ERRLIMIT_ISR;
+-void ep2isoerr_isr() __interrupt EP2ISOERR_ISR;
+-void ep4isoerr_isr() __interrupt EP4ISOERR_ISR;
+-void ep6isoerr_isr() __interrupt EP6ISOERR_ISR;
+-void ep8isoerr_isr() __interrupt EP8ISOERR_ISR;
+-void spare_isr() __interrupt RESERVED_ISR; // not used
++void sudav_isr() __interrupt(SUDAV_ISR);
++void sof_isr() __interrupt(SOF_ISR);
++void sutok_isr() __interrupt(SUTOK_ISR);
++void suspend_isr() __interrupt(SUSPEND_ISR);
++void usbreset_isr() __interrupt(USBRESET_ISR);
++void hispeed_isr() __interrupt(HISPEED_ISR);
++void ep0ack_isr() __interrupt(EP0ACK_ISR);
++void ep0in_isr() __interrupt(EP0IN_ISR);
++void ep0out_isr() __interrupt(EP0OUT_ISR);
++void ep1in_isr() __interrupt(EP1IN_ISR);
++void ep1out_isr() __interrupt(EP1OUT_ISR);
++void ep2_isr() __interrupt(EP2_ISR);
++void ep4_isr() __interrupt(EP4_ISR);
++void ep6_isr() __interrupt(EP6_ISR);
++void ep8_isr() __interrupt(EP8_ISR);
++void ibn_isr() __interrupt(IBN_ISR);
++void ep0ping_isr() __interrupt(EP0PING_ISR);
++void ep1ping_isr() __interrupt(EP1PING_ISR);
++void ep2ping_isr() __interrupt(EP2PING_ISR);
++void ep4ping_isr() __interrupt(EP4PING_ISR);
++void ep6ping_isr() __interrupt(EP6PING_ISR);
++void ep8ping_isr() __interrupt(EP8PING_ISR);
++void errlimit_isr() __interrupt(ERRLIMIT_ISR);
++void ep2isoerr_isr() __interrupt(EP2ISOERR_ISR);
++void ep4isoerr_isr() __interrupt(EP4ISOERR_ISR);
++void ep6isoerr_isr() __interrupt(EP6ISOERR_ISR);
++void ep8isoerr_isr() __interrupt(EP8ISOERR_ISR);
++void spare_isr() __interrupt(RESERVED_ISR); // not used
+ // gpif ints
+-void ep2pf_isr() __interrupt EP2PF_ISR;
+-void ep4pf_isr() __interrupt EP4PF_ISR;
+-void ep6pf_isr() __interrupt EP6PF_ISR;
+-void ep8pf_isr() __interrupt EP8PF_ISR;
+-void ep2ef_isr() __interrupt EP2EF_ISR;
+-void ep4ef_isr() __interrupt EP4EF_ISR;
+-void ep6ef_isr() __interrupt EP6EF_ISR;
+-void ep8ef_isr() __interrupt EP8EF_ISR;
+-void ep2ff_isr() __interrupt EP2FF_ISR;
+-void ep4ff_isr() __interrupt EP4FF_ISR;
+-void ep6ff_isr() __interrupt EP6FF_ISR;
+-void ep8ff_isr() __interrupt EP8FF_ISR;
+-void gpifdone_isr() __interrupt GPIFDONE_ISR;
+-void gpifwf_isr() __interrupt GPIFWF_ISR;
++void ep2pf_isr() __interrupt(EP2PF_ISR);
++void ep4pf_isr() __interrupt(EP4PF_ISR);
++void ep6pf_isr() __interrupt(EP6PF_ISR);
++void ep8pf_isr() __interrupt(EP8PF_ISR);
++void ep2ef_isr() __interrupt(EP2EF_ISR);
++void ep4ef_isr() __interrupt(EP4EF_ISR);
++void ep6ef_isr() __interrupt(EP6EF_ISR);
++void ep8ef_isr() __interrupt(EP8EF_ISR);
++void ep2ff_isr() __interrupt(EP2FF_ISR);
++void ep4ff_isr() __interrupt(EP4FF_ISR);
++void ep6ff_isr() __interrupt(EP6FF_ISR);
++void ep8ff_isr() __interrupt(EP8FF_ISR);
++void gpifdone_isr() __interrupt(GPIFDONE_ISR);
++void gpifwf_isr() __interrupt(GPIFWF_ISR);
+
+ #endif
+
+diff --git a/fx2lib/lib/interrupts/ep0ack_isr.c b/fx2lib/lib/interrupts/ep0ack_isr.c
+index dec4e56a..d216717d 100644
+--- a/fx2lib/lib/interrupts/ep0ack_isr.c
++++ b/fx2lib/lib/interrupts/ep0ack_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0ack_isr() __interrupt EP0ACK_ISR {}
++void ep0ack_isr() __interrupt(EP0ACK_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0in_isr.c b/fx2lib/lib/interrupts/ep0in_isr.c
+index 2fa99a42..f3d8990e 100644
+--- a/fx2lib/lib/interrupts/ep0in_isr.c
++++ b/fx2lib/lib/interrupts/ep0in_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0in_isr() __interrupt EP0IN_ISR {}
++void ep0in_isr() __interrupt(EP0IN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0out_isr.c b/fx2lib/lib/interrupts/ep0out_isr.c
+index 043ae70d..a5acedb7 100644
+--- a/fx2lib/lib/interrupts/ep0out_isr.c
++++ b/fx2lib/lib/interrupts/ep0out_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0out_isr() __interrupt EP0OUT_ISR {}
++void ep0out_isr() __interrupt(EP0OUT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0ping_isr.c b/fx2lib/lib/interrupts/ep0ping_isr.c
+index 3062d177..7b1ee929 100644
+--- a/fx2lib/lib/interrupts/ep0ping_isr.c
++++ b/fx2lib/lib/interrupts/ep0ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0ping_isr() __interrupt EP0PING_ISR {}
++void ep0ping_isr() __interrupt(EP0PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1in_isr.c b/fx2lib/lib/interrupts/ep1in_isr.c
+index d4ecf06f..b666fcb3 100644
+--- a/fx2lib/lib/interrupts/ep1in_isr.c
++++ b/fx2lib/lib/interrupts/ep1in_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1in_isr() __interrupt EP1IN_ISR {}
++void ep1in_isr() __interrupt(EP1IN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1out_isr.c b/fx2lib/lib/interrupts/ep1out_isr.c
+index 998b7aa8..6c87dc20 100644
+--- a/fx2lib/lib/interrupts/ep1out_isr.c
++++ b/fx2lib/lib/interrupts/ep1out_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1out_isr() __interrupt EP1OUT_ISR {}
++void ep1out_isr() __interrupt(EP1OUT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1ping_isr.c b/fx2lib/lib/interrupts/ep1ping_isr.c
+index ff8990e0..c32d437c 100644
+--- a/fx2lib/lib/interrupts/ep1ping_isr.c
++++ b/fx2lib/lib/interrupts/ep1ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1ping_isr() __interrupt EP1PING_ISR {}
++void ep1ping_isr() __interrupt(EP1PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2_isr.c b/fx2lib/lib/interrupts/ep2_isr.c
+index 43a31b7d..4de637a3 100644
+--- a/fx2lib/lib/interrupts/ep2_isr.c
++++ b/fx2lib/lib/interrupts/ep2_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2_isr() __interrupt EP2_ISR {}
++void ep2_isr() __interrupt(EP2_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2ef_isr.c b/fx2lib/lib/interrupts/ep2ef_isr.c
+index e26c5e8a..46f3f87a 100644
+--- a/fx2lib/lib/interrupts/ep2ef_isr.c
++++ b/fx2lib/lib/interrupts/ep2ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ef_isr() __interrupt EP2EF_ISR{}
++void ep2ef_isr() __interrupt(EP2EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2ff_isr.c b/fx2lib/lib/interrupts/ep2ff_isr.c
+index 22bb95d7..400e4803 100644
+--- a/fx2lib/lib/interrupts/ep2ff_isr.c
++++ b/fx2lib/lib/interrupts/ep2ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ff_isr() __interrupt EP2FF_ISR{}
++void ep2ff_isr() __interrupt(EP2FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2isoerr_isr.c b/fx2lib/lib/interrupts/ep2isoerr_isr.c
+index b9dc9b50..d0ca4a89 100644
+--- a/fx2lib/lib/interrupts/ep2isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep2isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2isoerr_isr() __interrupt EP2ISOERR_ISR {}
++void ep2isoerr_isr() __interrupt(EP2ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2pf_isr.c b/fx2lib/lib/interrupts/ep2pf_isr.c
+index 7cad068e..9bd8e9aa 100644
+--- a/fx2lib/lib/interrupts/ep2pf_isr.c
++++ b/fx2lib/lib/interrupts/ep2pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2pf_isr() __interrupt EP2PF_ISR{}
++void ep2pf_isr() __interrupt(EP2PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2ping_isr.c b/fx2lib/lib/interrupts/ep2ping_isr.c
+index 78affed5..dad1e953 100644
+--- a/fx2lib/lib/interrupts/ep2ping_isr.c
++++ b/fx2lib/lib/interrupts/ep2ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ping_isr() __interrupt EP2PING_ISR {}
++void ep2ping_isr() __interrupt(EP2PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4_isr.c b/fx2lib/lib/interrupts/ep4_isr.c
+index 0315c853..5affac9a 100644
+--- a/fx2lib/lib/interrupts/ep4_isr.c
++++ b/fx2lib/lib/interrupts/ep4_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4_isr() __interrupt EP4_ISR {}
++void ep4_isr() __interrupt(EP4_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4ef_isr.c b/fx2lib/lib/interrupts/ep4ef_isr.c
+index a203e7ba..4a0cff1a 100644
+--- a/fx2lib/lib/interrupts/ep4ef_isr.c
++++ b/fx2lib/lib/interrupts/ep4ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ef_isr() __interrupt EP4EF_ISR{}
++void ep4ef_isr() __interrupt(EP4EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4ff_isr.c b/fx2lib/lib/interrupts/ep4ff_isr.c
+index e0cd201b..3278da2d 100644
+--- a/fx2lib/lib/interrupts/ep4ff_isr.c
++++ b/fx2lib/lib/interrupts/ep4ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ff_isr() __interrupt EP4FF_ISR{}
++void ep4ff_isr() __interrupt(EP4FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4isoerr_isr.c b/fx2lib/lib/interrupts/ep4isoerr_isr.c
+index 579fb8bf..dcd7ff90 100644
+--- a/fx2lib/lib/interrupts/ep4isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep4isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4isoerr_isr() __interrupt EP4ISOERR_ISR {}
++void ep4isoerr_isr() __interrupt(EP4ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4pf_isr.c b/fx2lib/lib/interrupts/ep4pf_isr.c
+index ec5ce725..7bbe9f02 100644
+--- a/fx2lib/lib/interrupts/ep4pf_isr.c
++++ b/fx2lib/lib/interrupts/ep4pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4pf_isr() __interrupt EP4PF_ISR{}
++void ep4pf_isr() __interrupt(EP4PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4ping_isr.c b/fx2lib/lib/interrupts/ep4ping_isr.c
+index 18bac000..8d226856 100644
+--- a/fx2lib/lib/interrupts/ep4ping_isr.c
++++ b/fx2lib/lib/interrupts/ep4ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ping_isr() __interrupt EP4PING_ISR {}
++void ep4ping_isr() __interrupt(EP4PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6_isr.c b/fx2lib/lib/interrupts/ep6_isr.c
+index 552e60de..630f9b26 100644
+--- a/fx2lib/lib/interrupts/ep6_isr.c
++++ b/fx2lib/lib/interrupts/ep6_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6_isr() __interrupt EP6_ISR {}
++void ep6_isr() __interrupt(EP6_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6ef_isr.c b/fx2lib/lib/interrupts/ep6ef_isr.c
+index 39e8e0c5..e9ba6d54 100644
+--- a/fx2lib/lib/interrupts/ep6ef_isr.c
++++ b/fx2lib/lib/interrupts/ep6ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ef_isr() __interrupt EP6EF_ISR{}
++void ep6ef_isr() __interrupt(EP6EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6ff_isr.c b/fx2lib/lib/interrupts/ep6ff_isr.c
+index 54137316..011fe871 100644
+--- a/fx2lib/lib/interrupts/ep6ff_isr.c
++++ b/fx2lib/lib/interrupts/ep6ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ff_isr() __interrupt EP6FF_ISR{}
++void ep6ff_isr() __interrupt(EP6FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6isoerr_isr.c b/fx2lib/lib/interrupts/ep6isoerr_isr.c
+index 407414c7..8c005777 100644
+--- a/fx2lib/lib/interrupts/ep6isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep6isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6isoerr_isr() __interrupt EP6ISOERR_ISR {}
++void ep6isoerr_isr() __interrupt(EP6ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6pf_isr.c b/fx2lib/lib/interrupts/ep6pf_isr.c
+index 808f7513..52f6d738 100644
+--- a/fx2lib/lib/interrupts/ep6pf_isr.c
++++ b/fx2lib/lib/interrupts/ep6pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6pf_isr() __interrupt EP6PF_ISR{}
++void ep6pf_isr() __interrupt(EP6PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6ping_isr.c b/fx2lib/lib/interrupts/ep6ping_isr.c
+index 53f8ba52..5430f209 100644
+--- a/fx2lib/lib/interrupts/ep6ping_isr.c
++++ b/fx2lib/lib/interrupts/ep6ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ping_isr() __interrupt EP6PING_ISR {}
++void ep6ping_isr() __interrupt(EP6PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8_isr.c b/fx2lib/lib/interrupts/ep8_isr.c
+index 4f1dd51d..d415a3ec 100644
+--- a/fx2lib/lib/interrupts/ep8_isr.c
++++ b/fx2lib/lib/interrupts/ep8_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8_isr() __interrupt EP8_ISR {}
++void ep8_isr() __interrupt(EP8_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8ef_isr.c b/fx2lib/lib/interrupts/ep8ef_isr.c
+index c018f3ac..d04d2376 100644
+--- a/fx2lib/lib/interrupts/ep8ef_isr.c
++++ b/fx2lib/lib/interrupts/ep8ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ef_isr() __interrupt EP8EF_ISR{}
++void ep8ef_isr() __interrupt(EP8EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8ff_isr.c b/fx2lib/lib/interrupts/ep8ff_isr.c
+index a6169de3..d1e5fcd7 100644
+--- a/fx2lib/lib/interrupts/ep8ff_isr.c
++++ b/fx2lib/lib/interrupts/ep8ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ff_isr() __interrupt EP8FF_ISR{}
++void ep8ff_isr() __interrupt(EP8FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8isoerr_isr.c b/fx2lib/lib/interrupts/ep8isoerr_isr.c
+index a95bae9a..a7e8e0f9 100644
+--- a/fx2lib/lib/interrupts/ep8isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep8isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8isoerr_isr() __interrupt EP8ISOERR_ISR {}
++void ep8isoerr_isr() __interrupt(EP8ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8pf_isr.c b/fx2lib/lib/interrupts/ep8pf_isr.c
+index b0e687c6..53dcdf27 100644
+--- a/fx2lib/lib/interrupts/ep8pf_isr.c
++++ b/fx2lib/lib/interrupts/ep8pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8pf_isr() __interrupt EP8PF_ISR{}
++void ep8pf_isr() __interrupt(EP8PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8ping_isr.c b/fx2lib/lib/interrupts/ep8ping_isr.c
+index e9c25d9e..5cf05dc7 100644
+--- a/fx2lib/lib/interrupts/ep8ping_isr.c
++++ b/fx2lib/lib/interrupts/ep8ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ping_isr() __interrupt EP8PING_ISR {}
++void ep8ping_isr() __interrupt(EP8PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/errlimit_isr.c b/fx2lib/lib/interrupts/errlimit_isr.c
+index fe103c22..cf4e1f61 100644
+--- a/fx2lib/lib/interrupts/errlimit_isr.c
++++ b/fx2lib/lib/interrupts/errlimit_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void errlimit_isr() __interrupt ERRLIMIT_ISR {}
++void errlimit_isr() __interrupt(ERRLIMIT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/gpifdone_isr.c b/fx2lib/lib/interrupts/gpifdone_isr.c
+index 6bb15c77..ee5ce1f6 100644
+--- a/fx2lib/lib/interrupts/gpifdone_isr.c
++++ b/fx2lib/lib/interrupts/gpifdone_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void gpifdone_isr() __interrupt GPIFDONE_ISR{}
++void gpifdone_isr() __interrupt(GPIFDONE_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/gpifwf_isr.c b/fx2lib/lib/interrupts/gpifwf_isr.c
+index 49eba448..e9941541 100644
+--- a/fx2lib/lib/interrupts/gpifwf_isr.c
++++ b/fx2lib/lib/interrupts/gpifwf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void gpifwf_isr() __interrupt GPIFWF_ISR{}
++void gpifwf_isr() __interrupt(GPIFWF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/hispeed_isr.c b/fx2lib/lib/interrupts/hispeed_isr.c
+index 7b05916f..9daabc12 100644
+--- a/fx2lib/lib/interrupts/hispeed_isr.c
++++ b/fx2lib/lib/interrupts/hispeed_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void hispeed_isr() __interrupt HISPEED_ISR {}
++void hispeed_isr() __interrupt(HISPEED_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ibn_isr.c b/fx2lib/lib/interrupts/ibn_isr.c
+index 0f38871a..aa0a7523 100644
+--- a/fx2lib/lib/interrupts/ibn_isr.c
++++ b/fx2lib/lib/interrupts/ibn_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ibn_isr() __interrupt IBN_ISR {}
++void ibn_isr() __interrupt(IBN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sof_isr.c b/fx2lib/lib/interrupts/sof_isr.c
+index 49bf5081..64a409c4 100644
+--- a/fx2lib/lib/interrupts/sof_isr.c
++++ b/fx2lib/lib/interrupts/sof_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sof_isr() __interrupt SOF_ISR {}
++void sof_isr() __interrupt(SOF_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/spare_isr.c b/fx2lib/lib/interrupts/spare_isr.c
+index 965b2818..3b81fd20 100644
+--- a/fx2lib/lib/interrupts/spare_isr.c
++++ b/fx2lib/lib/interrupts/spare_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void spare_isr() __interrupt RESERVED_ISR {}
++void spare_isr() __interrupt(RESERVED_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sudav_isr.c b/fx2lib/lib/interrupts/sudav_isr.c
+index 7660e115..4d36b59a 100644
+--- a/fx2lib/lib/interrupts/sudav_isr.c
++++ b/fx2lib/lib/interrupts/sudav_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sudav_isr() __interrupt SUDAV_ISR {}
++void sudav_isr() __interrupt(SUDAV_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/suspend_isr.c b/fx2lib/lib/interrupts/suspend_isr.c
+index 4b2f1aa2..cf08b28a 100644
+--- a/fx2lib/lib/interrupts/suspend_isr.c
++++ b/fx2lib/lib/interrupts/suspend_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void suspend_isr() __interrupt SUSPEND_ISR {}
++void suspend_isr() __interrupt(SUSPEND_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sutok_isr.c b/fx2lib/lib/interrupts/sutok_isr.c
+index 05330799..8c7368d2 100644
+--- a/fx2lib/lib/interrupts/sutok_isr.c
++++ b/fx2lib/lib/interrupts/sutok_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sutok_isr() __interrupt SUTOK_ISR {}
++void sutok_isr() __interrupt(SUTOK_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/usbreset_isr.c b/fx2lib/lib/interrupts/usbreset_isr.c
+index 7f2ed72d..8888eede 100644
+--- a/fx2lib/lib/interrupts/usbreset_isr.c
++++ b/fx2lib/lib/interrupts/usbreset_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void usbreset_isr() __interrupt USBRESET_ISR {}
++void usbreset_isr() __interrupt(USBRESET_ISR) {}
+
diff --git a/misc/sigrok-firmware-fx2lafw/patches/02-fx2lafw__Update___interrupt_syntax_for_sdcc_4.2.3.patch b/misc/sigrok-firmware-fx2lafw/patches/02-fx2lafw__Update___interrupt_syntax_for_sdcc_4.2.3.patch
new file mode 100644
index 0000000000..402ec85b64
--- /dev/null
+++ b/misc/sigrok-firmware-fx2lafw/patches/02-fx2lafw__Update___interrupt_syntax_for_sdcc_4.2.3.patch
@@ -0,0 +1,108 @@
+From: Matthew Cengia <redacted>
+Date: Tue, 15 Aug 2023 00:39:32 +0000 (+1000)
+Subject: fx2lafw: Update __interrupt syntax for sdcc>=4.2.3
+X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=commitdiff_plain;h=3e08500d22f87f69941b65cf8b8c1b85f9b41173
+
+fx2lafw: Update __interrupt syntax for sdcc>=4.2.3
+
+The SDCC user manual https://sdcc.sourceforge.net/doc/sdccman.pdf
+section 1.5 "Compatibility with previous versions" on page 11 states:
+
+> In 4.2.3, support for non-parenthesized arguments to __using and
+> __interrupt was dropped.
+
+Adjust the sigrok fx2lafw application source to unbreak compilation with
+more recent SDCC versions.
+---
+
+diff --git a/fx2lafw.c b/fx2lafw.c
+index 1035713d..42129219 100644
+--- a/fx2lafw.c
++++ b/fx2lafw.c
+@@ -191,14 +191,14 @@ BOOL handle_set_configuration(BYTE cfg)
+ return (cfg == 1) ? TRUE : FALSE;
+ }
+
+-void sudav_isr(void) __interrupt SUDAV_ISR
++void sudav_isr(void) __interrupt(SUDAV_ISR)
+ {
+ got_sud = TRUE;
+ CLEAR_SUDAV();
+ }
+
+ /* IN BULK NAK - the host started requesting data. */
+-void ibn_isr(void) __interrupt IBN_ISR
++void ibn_isr(void) __interrupt(IBN_ISR)
+ {
+ /*
+ * If the IBN interrupt is not disabled, clearing
+@@ -229,19 +229,19 @@ void ibn_isr(void) __interrupt IBN_ISR
+ SYNCDELAY();
+ }
+
+-void usbreset_isr(void) __interrupt USBRESET_ISR
++void usbreset_isr(void) __interrupt(USBRESET_ISR)
+ {
+ handle_hispeed(FALSE);
+ CLEAR_USBRESET();
+ }
+
+-void hispeed_isr(void) __interrupt HISPEED_ISR
++void hispeed_isr(void) __interrupt(HISPEED_ISR)
+ {
+ handle_hispeed(TRUE);
+ CLEAR_HISPEED();
+ }
+
+-void timer2_isr(void) __interrupt TF2_ISR
++void timer2_isr(void) __interrupt(TF2_ISR)
+ {
+ /* Blink LED during acquisition, keep it on otherwise. */
+ if (gpif_acquiring == RUNNING) {
+diff --git a/include/scope.inc b/include/scope.inc
+index 96422f1b..c6990853 100644
+--- a/include/scope.inc
++++ b/include/scope.inc
+@@ -43,36 +43,36 @@ static volatile __bit dosuspend = FALSE;
+ extern __code BYTE highspd_dscr;
+ extern __code BYTE fullspd_dscr;
+
+-void resume_isr(void) __interrupt RESUME_ISR
++void resume_isr(void) __interrupt(RESUME_ISR)
+ {
+ CLEAR_RESUME();
+ }
+
+-void sudav_isr(void) __interrupt SUDAV_ISR
++void sudav_isr(void) __interrupt(SUDAV_ISR)
+ {
+ dosud = TRUE;
+ CLEAR_SUDAV();
+ }
+
+-void usbreset_isr(void) __interrupt USBRESET_ISR
++void usbreset_isr(void) __interrupt(USBRESET_ISR)
+ {
+ handle_hispeed(FALSE);
+ CLEAR_USBRESET();
+ }
+
+-void hispeed_isr(void) __interrupt HISPEED_ISR
++void hispeed_isr(void) __interrupt(HISPEED_ISR)
+ {
+ handle_hispeed(TRUE);
+ CLEAR_HISPEED();
+ }
+
+-void suspend_isr(void) __interrupt SUSPEND_ISR
++void suspend_isr(void) __interrupt(SUSPEND_ISR)
+ {
+ dosuspend = TRUE;
+ CLEAR_SUSPEND();
+ }
+
+-void timer2_isr(void) __interrupt TF2_ISR
++void timer2_isr(void) __interrupt(TF2_ISR)
+ {
+ /* Toggle the probe calibration pin, only accurate up to ca. 8MHz. */
+ TOGGLE_CALIBRATION_PIN();
diff --git a/misc/sigrok-firmware-fx2lafw/patches/03-fx2lafw__Update___at_syntax_for_sdcc_4.2.3.patch b/misc/sigrok-firmware-fx2lafw/patches/03-fx2lafw__Update___at_syntax_for_sdcc_4.2.3.patch
new file mode 100644
index 0000000000..a591d310b9
--- /dev/null
+++ b/misc/sigrok-firmware-fx2lafw/patches/03-fx2lafw__Update___at_syntax_for_sdcc_4.2.3.patch
@@ -0,0 +1,300 @@
+From: Matthew Cengia <redacted>
+Date: Tue, 15 Aug 2023 00:35:45 +0000 (+1000)
+Subject: fx2lafw: Update __at syntax for sdcc>=4.2.3
+X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=commitdiff_plain;h=96b0b476522c3f93a47ff8f479ec08105ba6a2a5
+
+fx2lafw: Update __at syntax for sdcc>=4.2.3
+
+The SDCC user manual https://sdcc.sourceforge.net/doc/sdccman.pdf
+section 1.5 "Compatibility with previous versions" on page 12 states:
+
+> In 4.2.3, support for non-parenthesized arguments to __at that are
+> not constants was dropped.
+
+Adjust the sigrok fx2lafw application source to unbreak compilation with
+more recent SDCC versions.
+---
+
+diff --git a/fx2lib/include/fx2regs.h b/fx2lib/include/fx2regs.h
+index 0645fe36..6ae3339d 100644
+--- a/fx2lib/include/fx2regs.h
++++ b/fx2lib/include/fx2regs.h
+@@ -266,14 +266,14 @@ __xdata __at 0xE50D volatile BYTE GPCR2; ///< Chip Features
+
+ __sfr __at 0x80 IOA;
+ /* IOA */
+- __sbit __at 0x80 + 0 PA0;
+- __sbit __at 0x80 + 1 PA1;
+- __sbit __at 0x80 + 2 PA2;
+- __sbit __at 0x80 + 3 PA3;
+- __sbit __at 0x80 + 4 PA4;
+- __sbit __at 0x80 + 5 PA5;
+- __sbit __at 0x80 + 6 PA6;
+- __sbit __at 0x80 + 7 PA7;
++ __sbit __at (0x80+0) PA0;
++ __sbit __at (0x80+1) PA1;
++ __sbit __at (0x80+2) PA2;
++ __sbit __at (0x80+3) PA3;
++ __sbit __at (0x80+4) PA4;
++ __sbit __at (0x80+5) PA5;
++ __sbit __at (0x80+6) PA6;
++ __sbit __at (0x80+7) PA7;
+ __sfr __at 0x81 SP;
+ __sfr __at 0x82 DPL;
+ __sfr __at 0x83 DPH;
+@@ -283,14 +283,14 @@ __sfr __at 0x86 DPS;
+ __sfr __at 0x87 PCON;
+ __sfr __at 0x88 TCON;
+ /* TCON */
+- __sbit __at 0x88+0 IT0;
+- __sbit __at 0x88+1 IE0;
+- __sbit __at 0x88+2 IT1;
+- __sbit __at 0x88+3 IE1;
+- __sbit __at 0x88+4 TR0;
+- __sbit __at 0x88+5 TF0;
+- __sbit __at 0x88+6 TR1;
+- __sbit __at 0x88+7 TF1;
++ __sbit __at (0x88+0) IT0;
++ __sbit __at (0x88+1) IE0;
++ __sbit __at (0x88+2) IT1;
++ __sbit __at (0x88+3) IE1;
++ __sbit __at (0x88+4) TR0;
++ __sbit __at (0x88+5) TF0;
++ __sbit __at (0x88+6) TR1;
++ __sbit __at (0x88+7) TF1;
+ __sfr __at 0x89 TMOD;
+ __sfr __at 0x8A TL0;
+ __sfr __at 0x8B TL1;
+@@ -299,28 +299,28 @@ __sfr __at 0x8D TH1;
+ __sfr __at 0x8E CKCON;
+ __sfr __at 0x90 IOB;
+ /* IOB */
+- __sbit __at 0x90 + 0 PB0;
+- __sbit __at 0x90 + 1 PB1;
+- __sbit __at 0x90 + 2 PB2;
+- __sbit __at 0x90 + 3 PB3;
+- __sbit __at 0x90 + 4 PB4;
+- __sbit __at 0x90 + 5 PB5;
+- __sbit __at 0x90 + 6 PB6;
+- __sbit __at 0x90 + 7 PB7;
++ __sbit __at (0x90+0) PB0;
++ __sbit __at (0x90+1) PB1;
++ __sbit __at (0x90+2) PB2;
++ __sbit __at (0x90+3) PB3;
++ __sbit __at (0x90+4) PB4;
++ __sbit __at (0x90+5) PB5;
++ __sbit __at (0x90+6) PB6;
++ __sbit __at (0x90+7) PB7;
+ __sfr __at 0x91 EXIF;
+
+ //__sfr __at 0x92 MPAGE;
+ __sfr __at 0x92 _XPAGE; // same as MPAGE for pdata __sfr access w/ sdcc
+ __sfr __at 0x98 SCON0;
+ /* SCON0 */
+- __sbit __at 0x98+0 RI;
+- __sbit __at 0x98+1 TI;
+- __sbit __at 0x98+2 RB8;
+- __sbit __at 0x98+3 TB8;
+- __sbit __at 0x98+4 REN;
+- __sbit __at 0x98+5 SM2;
+- __sbit __at 0x98+6 SM1;
+- __sbit __at 0x98+7 SM0;
++ __sbit __at (0x98+0) RI;
++ __sbit __at (0x98+1) TI;
++ __sbit __at (0x98+2) RB8;
++ __sbit __at (0x98+3) TB8;
++ __sbit __at (0x98+4) REN;
++ __sbit __at (0x98+5) SM2;
++ __sbit __at (0x98+6) SM1;
++ __sbit __at (0x98+7) SM0;
+ __sfr __at 0x99 SBUF0;
+
+ __sfr __at 0x9A AUTOPTRH1;
+@@ -330,27 +330,27 @@ __sfr __at 0x9E AUTOPTRL2;
+
+ __sfr __at 0xA0 IOC;
+ /* IOC */
+- __sbit __at 0xA0 + 0 PC0;
+- __sbit __at 0xA0 + 1 PC1;
+- __sbit __at 0xA0 + 2 PC2;
+- __sbit __at 0xA0 + 3 PC3;
+- __sbit __at 0xA0 + 4 PC4;
+- __sbit __at 0xA0 + 5 PC5;
+- __sbit __at 0xA0 + 6 PC6;
+- __sbit __at 0xA0 + 7 PC7;
++ __sbit __at (0xA0+0) PC0;
++ __sbit __at (0xA0+1) PC1;
++ __sbit __at (0xA0+2) PC2;
++ __sbit __at (0xA0+3) PC3;
++ __sbit __at (0xA0+4) PC4;
++ __sbit __at (0xA0+5) PC5;
++ __sbit __at (0xA0+6) PC6;
++ __sbit __at (0xA0+7) PC7;
+ __sfr __at 0xA1 INT2CLR;
+ __sfr __at 0xA2 INT4CLR;
+
+ __sfr __at 0xA8 IE;
+ /* IE */
+- __sbit __at 0xA8+0 EX0;
+- __sbit __at 0xA8+1 ET0;
+- __sbit __at 0xA8+2 EX1;
+- __sbit __at 0xA8+3 ET1;
+- __sbit __at 0xA8+4 ES0;
+- __sbit __at 0xA8+5 ET2;
+- __sbit __at 0xA8+6 ES1;
+- __sbit __at 0xA8+7 EA;
++ __sbit __at (0xA8+0) EX0;
++ __sbit __at (0xA8+1) ET0;
++ __sbit __at (0xA8+2) EX1;
++ __sbit __at (0xA8+3) ET1;
++ __sbit __at (0xA8+4) ES0;
++ __sbit __at (0xA8+5) ET2;
++ __sbit __at (0xA8+6) ES1;
++ __sbit __at (0xA8+7) EA;
+
+ __sfr __at 0xAA EP2468STAT;
+ __sfr __at 0xAB EP24FIFOFLGS;
+@@ -358,14 +358,14 @@ __sfr __at 0xAC EP68FIFOFLGS;
+ __sfr __at 0xAF AUTOPTRSETUP;
+ __sfr __at 0xB0 IOD;
+ /* IOD */
+- __sbit __at 0xB0 + 0 PD0;
+- __sbit __at 0xB0 + 1 PD1;
+- __sbit __at 0xB0 + 2 PD2;
+- __sbit __at 0xB0 + 3 PD3;
+- __sbit __at 0xB0 + 4 PD4;
+- __sbit __at 0xB0 + 5 PD5;
+- __sbit __at 0xB0 + 6 PD6;
+- __sbit __at 0xB0 + 7 PD7;
++ __sbit __at (0xB0+0) PD0;
++ __sbit __at (0xB0+1) PD1;
++ __sbit __at (0xB0+2) PD2;
++ __sbit __at (0xB0+3) PD3;
++ __sbit __at (0xB0+4) PD4;
++ __sbit __at (0xB0+5) PD5;
++ __sbit __at (0xB0+6) PD6;
++ __sbit __at (0xB0+7) PD7;
+ __sfr __at 0xB1 IOE;
+ __sfr __at 0xB2 OEA;
+ __sfr __at 0xB3 OEB;
+@@ -375,13 +375,13 @@ __sfr __at 0xB6 OEE;
+
+ __sfr __at 0xB8 IP;
+ /* IP */
+- __sbit __at 0xB8+0 PX0;
+- __sbit __at 0xB8+1 PT0;
+- __sbit __at 0xB8+2 PX1;
+- __sbit __at 0xB8+3 PT1;
+- __sbit __at 0xB8+4 PS0;
+- __sbit __at 0xB8+5 PT2;
+- __sbit __at 0xB8+6 PS1;
++ __sbit __at (0xB8+0) PX0;
++ __sbit __at (0xB8+1) PT0;
++ __sbit __at (0xB8+2) PX1;
++ __sbit __at (0xB8+3) PT1;
++ __sbit __at (0xB8+4) PS0;
++ __sbit __at (0xB8+5) PT2;
++ __sbit __at (0xB8+6) PS1;
+
+ __sfr __at 0xBA EP01STAT;
+ __sfr __at 0xBB GPIFTRIG;
+@@ -392,61 +392,61 @@ __sfr __at 0xBF GPIFSGLDATLNOX;
+
+ __sfr __at 0xC0 SCON1;
+ /* SCON1 */
+- __sbit __at 0xC0+0 RI1;
+- __sbit __at 0xC0+1 TI1;
+- __sbit __at 0xC0+2 RB81;
+- __sbit __at 0xC0+3 TB81;
+- __sbit __at 0xC0+4 REN1;
+- __sbit __at 0xC0+5 SM21;
+- __sbit __at 0xC0+6 SM11;
+- __sbit __at 0xC0+7 SM01;
++ __sbit __at (0xC0+0) RI1;
++ __sbit __at (0xC0+1) TI1;
++ __sbit __at (0xC0+2) RB81;
++ __sbit __at (0xC0+3) TB81;
++ __sbit __at (0xC0+4) REN1;
++ __sbit __at (0xC0+5) SM21;
++ __sbit __at (0xC0+6) SM11;
++ __sbit __at (0xC0+7) SM01;
+ __sfr __at 0xC1 SBUF1;
+ __sfr __at 0xC8 T2CON;
+ /* T2CON */
+- __sbit __at 0xC8+0 CP_RL2;
+- __sbit __at 0xC8+1 C_T2;
+- __sbit __at 0xC8+2 TR2;
+- __sbit __at 0xC8+3 EXEN2;
+- __sbit __at 0xC8+4 TCLK;
+- __sbit __at 0xC8+5 RCLK;
+- __sbit __at 0xC8+6 EXF2;
+- __sbit __at 0xC8+7 TF2;
++ __sbit __at (0xC8+0) CP_RL2;
++ __sbit __at (0xC8+1) C_T2;
++ __sbit __at (0xC8+2) TR2;
++ __sbit __at (0xC8+3) EXEN2;
++ __sbit __at (0xC8+4) TCLK;
++ __sbit __at (0xC8+5) RCLK;
++ __sbit __at (0xC8+6) EXF2;
++ __sbit __at (0xC8+7) TF2;
+ __sfr __at 0xCA RCAP2L;
+ __sfr __at 0xCB RCAP2H;
+ __sfr __at 0xCC TL2;
+ __sfr __at 0xCD TH2;
+ __sfr __at 0xD0 PSW;
+ /* PSW */
+- __sbit __at 0xD0+0 P;
+- __sbit __at 0xD0+1 FL;
+- __sbit __at 0xD0+2 OV;
+- __sbit __at 0xD0+3 RS0;
+- __sbit __at 0xD0+4 RS1;
+- __sbit __at 0xD0+5 F0;
+- __sbit __at 0xD0+6 AC;
+- __sbit __at 0xD0+7 CY;
++ __sbit __at (0xD0+0) P;
++ __sbit __at (0xD0+1) FL;
++ __sbit __at (0xD0+2) OV;
++ __sbit __at (0xD0+3) RS0;
++ __sbit __at (0xD0+4) RS1;
++ __sbit __at (0xD0+5) F0;
++ __sbit __at (0xD0+6) AC;
++ __sbit __at (0xD0+7) CY;
+ __sfr __at 0xD8 EICON; // Was WDCON in DS80C320; Bit Values differ from Reg320
+ /* EICON */
+- __sbit __at 0xD8+3 INT6;
+- __sbit __at 0xD8+4 RESI;
+- __sbit __at 0xD8+5 ERESI;
+- __sbit __at 0xD8+7 SMOD1;
++ __sbit __at (0xD8+3) INT6;
++ __sbit __at (0xD8+4) RESI;
++ __sbit __at (0xD8+5) ERESI;
++ __sbit __at (0xD8+7) SMOD1;
+ __sfr __at 0xE0 ACC;
+ __sfr __at 0xE8 EIE; // EIE Bit Values differ from Reg320
+ /* EIE */
+- __sbit __at 0xE8+0 EUSB;
+- __sbit __at 0xE8+1 EI2C;
+- __sbit __at 0xE8+2 EIEX4;
+- __sbit __at 0xE8+3 EIEX5;
+- __sbit __at 0xE8+4 EIEX6;
++ __sbit __at (0xE8+0) EUSB;
++ __sbit __at (0xE8+1) EI2C;
++ __sbit __at (0xE8+2) EIEX4;
++ __sbit __at (0xE8+3) EIEX5;
++ __sbit __at (0xE8+4) EIEX6;
+ __sfr __at 0xF0 B;
+ __sfr __at 0xF8 EIP; // EIP Bit Values differ from Reg320
+ /* EIP */
+- __sbit __at 0xF8+0 PUSB;
+- __sbit __at 0xF8+1 PI2C;
+- __sbit __at 0xF8+2 EIPX4;
+- __sbit __at 0xF8+3 EIPX5;
+- __sbit __at 0xF8+4 EIPX6;
++ __sbit __at (0xF8+0) PUSB;
++ __sbit __at (0xF8+1) PI2C;
++ __sbit __at (0xF8+2) EIPX4;
++ __sbit __at (0xF8+3) EIPX5;
++ __sbit __at (0xF8+4) EIPX6;
+
+
+ /* CPU Control & Status Register (CPUCS) */
diff --git a/misc/sigrok-firmware-fx2lafw/patches/04-fx2lib_fix_SDCC_warning_283.patch b/misc/sigrok-firmware-fx2lafw/patches/04-fx2lib_fix_SDCC_warning_283.patch
new file mode 100644
index 0000000000..7b6968a095
--- /dev/null
+++ b/misc/sigrok-firmware-fx2lafw/patches/04-fx2lib_fix_SDCC_warning_283.patch
@@ -0,0 +1,686 @@
+From: Steve Markgraf <redacted>
+Date: Wed, 17 Jan 2024 19:18:34 +0000 (+0100)
+Subject: fx2lib: fix SDCC warning 283
+X-Git-Url: http://sigrok.org/gitweb/?p=sigrok-firmware-fx2lafw.git;a=commitdiff_plain;h=bb3c6dfdb3f95bf529ed95dcc5fb3610e4473673
+
+fx2lib: fix SDCC warning 283
+
+This fixes the following warnings that appear with
+SDCC >= 4.3.0:
+
+"warning 283: function declarator with no prototype"
+---
+
+diff --git a/fx2lib/include/autovector.h b/fx2lib/include/autovector.h
+index 38f80fcd..ecbeb411 100644
+--- a/fx2lib/include/autovector.h
++++ b/fx2lib/include/autovector.h
+@@ -172,49 +172,49 @@ typedef enum {
+ // you must include the predef of these in the file with your main
+ // so lets just define them here
+
+-void sudav_isr() __interrupt(SUDAV_ISR);
+-void sof_isr() __interrupt(SOF_ISR);
+-void sutok_isr() __interrupt(SUTOK_ISR);
+-void suspend_isr() __interrupt(SUSPEND_ISR);
+-void usbreset_isr() __interrupt(USBRESET_ISR);
+-void hispeed_isr() __interrupt(HISPEED_ISR);
+-void ep0ack_isr() __interrupt(EP0ACK_ISR);
+-void ep0in_isr() __interrupt(EP0IN_ISR);
+-void ep0out_isr() __interrupt(EP0OUT_ISR);
+-void ep1in_isr() __interrupt(EP1IN_ISR);
+-void ep1out_isr() __interrupt(EP1OUT_ISR);
+-void ep2_isr() __interrupt(EP2_ISR);
+-void ep4_isr() __interrupt(EP4_ISR);
+-void ep6_isr() __interrupt(EP6_ISR);
+-void ep8_isr() __interrupt(EP8_ISR);
+-void ibn_isr() __interrupt(IBN_ISR);
+-void ep0ping_isr() __interrupt(EP0PING_ISR);
+-void ep1ping_isr() __interrupt(EP1PING_ISR);
+-void ep2ping_isr() __interrupt(EP2PING_ISR);
+-void ep4ping_isr() __interrupt(EP4PING_ISR);
+-void ep6ping_isr() __interrupt(EP6PING_ISR);
+-void ep8ping_isr() __interrupt(EP8PING_ISR);
+-void errlimit_isr() __interrupt(ERRLIMIT_ISR);
+-void ep2isoerr_isr() __interrupt(EP2ISOERR_ISR);
+-void ep4isoerr_isr() __interrupt(EP4ISOERR_ISR);
+-void ep6isoerr_isr() __interrupt(EP6ISOERR_ISR);
+-void ep8isoerr_isr() __interrupt(EP8ISOERR_ISR);
+-void spare_isr() __interrupt(RESERVED_ISR); // not used
++void sudav_isr(void) __interrupt(SUDAV_ISR);
++void sof_isr(void) __interrupt(SOF_ISR);
++void sutok_isr(void) __interrupt(SUTOK_ISR);
++void suspend_isr(void) __interrupt(SUSPEND_ISR);
++void usbreset_isr(void) __interrupt(USBRESET_ISR);
++void hispeed_isr(void) __interrupt(HISPEED_ISR);
++void ep0ack_isr(void) __interrupt(EP0ACK_ISR);
++void ep0in_isr(void) __interrupt(EP0IN_ISR);
++void ep0out_isr(void) __interrupt(EP0OUT_ISR);
++void ep1in_isr(void) __interrupt(EP1IN_ISR);
++void ep1out_isr(void) __interrupt(EP1OUT_ISR);
++void ep2_isr(void) __interrupt(EP2_ISR);
++void ep4_isr(void) __interrupt(EP4_ISR);
++void ep6_isr(void) __interrupt(EP6_ISR);
++void ep8_isr(void) __interrupt(EP8_ISR);
++void ibn_isr(void) __interrupt(IBN_ISR);
++void ep0ping_isr(void) __interrupt(EP0PING_ISR);
++void ep1ping_isr(void) __interrupt(EP1PING_ISR);
++void ep2ping_isr(void) __interrupt(EP2PING_ISR);
++void ep4ping_isr(void) __interrupt(EP4PING_ISR);
++void ep6ping_isr(void) __interrupt(EP6PING_ISR);
++void ep8ping_isr(void) __interrupt(EP8PING_ISR);
++void errlimit_isr(void) __interrupt(ERRLIMIT_ISR);
++void ep2isoerr_isr(void) __interrupt(EP2ISOERR_ISR);
++void ep4isoerr_isr(void) __interrupt(EP4ISOERR_ISR);
++void ep6isoerr_isr(void) __interrupt(EP6ISOERR_ISR);
++void ep8isoerr_isr(void) __interrupt(EP8ISOERR_ISR);
++void spare_isr(void) __interrupt(RESERVED_ISR); // not used
+ // gpif ints
+-void ep2pf_isr() __interrupt(EP2PF_ISR);
+-void ep4pf_isr() __interrupt(EP4PF_ISR);
+-void ep6pf_isr() __interrupt(EP6PF_ISR);
+-void ep8pf_isr() __interrupt(EP8PF_ISR);
+-void ep2ef_isr() __interrupt(EP2EF_ISR);
+-void ep4ef_isr() __interrupt(EP4EF_ISR);
+-void ep6ef_isr() __interrupt(EP6EF_ISR);
+-void ep8ef_isr() __interrupt(EP8EF_ISR);
+-void ep2ff_isr() __interrupt(EP2FF_ISR);
+-void ep4ff_isr() __interrupt(EP4FF_ISR);
+-void ep6ff_isr() __interrupt(EP6FF_ISR);
+-void ep8ff_isr() __interrupt(EP8FF_ISR);
+-void gpifdone_isr() __interrupt(GPIFDONE_ISR);
+-void gpifwf_isr() __interrupt(GPIFWF_ISR);
++void ep2pf_isr(void) __interrupt(EP2PF_ISR);
++void ep4pf_isr(void) __interrupt(EP4PF_ISR);
++void ep6pf_isr(void) __interrupt(EP6PF_ISR);
++void ep8pf_isr(void) __interrupt(EP8PF_ISR);
++void ep2ef_isr(void) __interrupt(EP2EF_ISR);
++void ep4ef_isr(void) __interrupt(EP4EF_ISR);
++void ep6ef_isr(void) __interrupt(EP6EF_ISR);
++void ep8ef_isr(void) __interrupt(EP8EF_ISR);
++void ep2ff_isr(void) __interrupt(EP2FF_ISR);
++void ep4ff_isr(void) __interrupt(EP4FF_ISR);
++void ep6ff_isr(void) __interrupt(EP6FF_ISR);
++void ep8ff_isr(void) __interrupt(EP8FF_ISR);
++void gpifdone_isr(void) __interrupt(GPIFDONE_ISR);
++void gpifwf_isr(void) __interrupt(GPIFWF_ISR);
+
+ #endif
+
+diff --git a/fx2lib/include/serial.h b/fx2lib/include/serial.h
+index 7c5935eb..c83959c4 100644
+--- a/fx2lib/include/serial.h
++++ b/fx2lib/include/serial.h
+@@ -51,4 +51,4 @@ void sio0_init( WORD baud_rate ) __critical ; // baud_rate max should be 57600 s
+ Just use one or the other. (This makes terminal echo easy)
+ **/
+ void putchar(char c);
+-char getchar();
++char getchar(void);
+diff --git a/fx2lib/include/setupdat.h b/fx2lib/include/setupdat.h
+index 5dba882a..fc9e40c6 100644
+--- a/fx2lib/include/setupdat.h
++++ b/fx2lib/include/setupdat.h
+@@ -148,7 +148,7 @@ __xdata BYTE* ep_addr(BYTE ep);
+ You can also use the usbjt and enable the sudav isr
+ and call the function from withing the sudav isr routine
+ */
+-void handle_setupdata();
++void handle_setupdata(void);
+
+
+ /**
+diff --git a/fx2lib/lib/interrupts/ep0ack_isr.c b/fx2lib/lib/interrupts/ep0ack_isr.c
+index d216717d..547e0bfc 100644
+--- a/fx2lib/lib/interrupts/ep0ack_isr.c
++++ b/fx2lib/lib/interrupts/ep0ack_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0ack_isr() __interrupt(EP0ACK_ISR) {}
++void ep0ack_isr(void) __interrupt(EP0ACK_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0in_isr.c b/fx2lib/lib/interrupts/ep0in_isr.c
+index f3d8990e..c55d0fbc 100644
+--- a/fx2lib/lib/interrupts/ep0in_isr.c
++++ b/fx2lib/lib/interrupts/ep0in_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0in_isr() __interrupt(EP0IN_ISR) {}
++void ep0in_isr(void) __interrupt(EP0IN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0out_isr.c b/fx2lib/lib/interrupts/ep0out_isr.c
+index a5acedb7..a93cd77c 100644
+--- a/fx2lib/lib/interrupts/ep0out_isr.c
++++ b/fx2lib/lib/interrupts/ep0out_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0out_isr() __interrupt(EP0OUT_ISR) {}
++void ep0out_isr(void) __interrupt(EP0OUT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep0ping_isr.c b/fx2lib/lib/interrupts/ep0ping_isr.c
+index 7b1ee929..218b7528 100644
+--- a/fx2lib/lib/interrupts/ep0ping_isr.c
++++ b/fx2lib/lib/interrupts/ep0ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep0ping_isr() __interrupt(EP0PING_ISR) {}
++void ep0ping_isr(void) __interrupt(EP0PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1in_isr.c b/fx2lib/lib/interrupts/ep1in_isr.c
+index b666fcb3..4197bd54 100644
+--- a/fx2lib/lib/interrupts/ep1in_isr.c
++++ b/fx2lib/lib/interrupts/ep1in_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1in_isr() __interrupt(EP1IN_ISR) {}
++void ep1in_isr(void) __interrupt(EP1IN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1out_isr.c b/fx2lib/lib/interrupts/ep1out_isr.c
+index 6c87dc20..8e19ca01 100644
+--- a/fx2lib/lib/interrupts/ep1out_isr.c
++++ b/fx2lib/lib/interrupts/ep1out_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1out_isr() __interrupt(EP1OUT_ISR) {}
++void ep1out_isr(void) __interrupt(EP1OUT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep1ping_isr.c b/fx2lib/lib/interrupts/ep1ping_isr.c
+index c32d437c..62849214 100644
+--- a/fx2lib/lib/interrupts/ep1ping_isr.c
++++ b/fx2lib/lib/interrupts/ep1ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep1ping_isr() __interrupt(EP1PING_ISR) {}
++void ep1ping_isr(void) __interrupt(EP1PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2_isr.c b/fx2lib/lib/interrupts/ep2_isr.c
+index 4de637a3..4596b3ce 100644
+--- a/fx2lib/lib/interrupts/ep2_isr.c
++++ b/fx2lib/lib/interrupts/ep2_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2_isr() __interrupt(EP2_ISR) {}
++void ep2_isr(void) __interrupt(EP2_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2ef_isr.c b/fx2lib/lib/interrupts/ep2ef_isr.c
+index 46f3f87a..a88f1571 100644
+--- a/fx2lib/lib/interrupts/ep2ef_isr.c
++++ b/fx2lib/lib/interrupts/ep2ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ef_isr() __interrupt(EP2EF_ISR){}
++void ep2ef_isr(void) __interrupt(EP2EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2ff_isr.c b/fx2lib/lib/interrupts/ep2ff_isr.c
+index 400e4803..1c073fbd 100644
+--- a/fx2lib/lib/interrupts/ep2ff_isr.c
++++ b/fx2lib/lib/interrupts/ep2ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ff_isr() __interrupt(EP2FF_ISR){}
++void ep2ff_isr(void) __interrupt(EP2FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2isoerr_isr.c b/fx2lib/lib/interrupts/ep2isoerr_isr.c
+index d0ca4a89..7b121a51 100644
+--- a/fx2lib/lib/interrupts/ep2isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep2isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2isoerr_isr() __interrupt(EP2ISOERR_ISR) {}
++void ep2isoerr_isr(void) __interrupt(EP2ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep2pf_isr.c b/fx2lib/lib/interrupts/ep2pf_isr.c
+index 9bd8e9aa..4aa71d33 100644
+--- a/fx2lib/lib/interrupts/ep2pf_isr.c
++++ b/fx2lib/lib/interrupts/ep2pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2pf_isr() __interrupt(EP2PF_ISR){}
++void ep2pf_isr(void) __interrupt(EP2PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep2ping_isr.c b/fx2lib/lib/interrupts/ep2ping_isr.c
+index dad1e953..336616cd 100644
+--- a/fx2lib/lib/interrupts/ep2ping_isr.c
++++ b/fx2lib/lib/interrupts/ep2ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep2ping_isr() __interrupt(EP2PING_ISR) {}
++void ep2ping_isr(void) __interrupt(EP2PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4_isr.c b/fx2lib/lib/interrupts/ep4_isr.c
+index 5affac9a..19beb727 100644
+--- a/fx2lib/lib/interrupts/ep4_isr.c
++++ b/fx2lib/lib/interrupts/ep4_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4_isr() __interrupt(EP4_ISR) {}
++void ep4_isr(void) __interrupt(EP4_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4ef_isr.c b/fx2lib/lib/interrupts/ep4ef_isr.c
+index 4a0cff1a..77c5576b 100644
+--- a/fx2lib/lib/interrupts/ep4ef_isr.c
++++ b/fx2lib/lib/interrupts/ep4ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ef_isr() __interrupt(EP4EF_ISR){}
++void ep4ef_isr(void) __interrupt(EP4EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4ff_isr.c b/fx2lib/lib/interrupts/ep4ff_isr.c
+index 3278da2d..cbe0b686 100644
+--- a/fx2lib/lib/interrupts/ep4ff_isr.c
++++ b/fx2lib/lib/interrupts/ep4ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ff_isr() __interrupt(EP4FF_ISR){}
++void ep4ff_isr(void) __interrupt(EP4FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4isoerr_isr.c b/fx2lib/lib/interrupts/ep4isoerr_isr.c
+index dcd7ff90..d198f3b8 100644
+--- a/fx2lib/lib/interrupts/ep4isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep4isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4isoerr_isr() __interrupt(EP4ISOERR_ISR) {}
++void ep4isoerr_isr(void) __interrupt(EP4ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep4pf_isr.c b/fx2lib/lib/interrupts/ep4pf_isr.c
+index 7bbe9f02..14ec7e5b 100644
+--- a/fx2lib/lib/interrupts/ep4pf_isr.c
++++ b/fx2lib/lib/interrupts/ep4pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4pf_isr() __interrupt(EP4PF_ISR){}
++void ep4pf_isr(void) __interrupt(EP4PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep4ping_isr.c b/fx2lib/lib/interrupts/ep4ping_isr.c
+index 8d226856..47de3721 100644
+--- a/fx2lib/lib/interrupts/ep4ping_isr.c
++++ b/fx2lib/lib/interrupts/ep4ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep4ping_isr() __interrupt(EP4PING_ISR) {}
++void ep4ping_isr(void) __interrupt(EP4PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6_isr.c b/fx2lib/lib/interrupts/ep6_isr.c
+index 630f9b26..61801f2f 100644
+--- a/fx2lib/lib/interrupts/ep6_isr.c
++++ b/fx2lib/lib/interrupts/ep6_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6_isr() __interrupt(EP6_ISR) {}
++void ep6_isr(void) __interrupt(EP6_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6ef_isr.c b/fx2lib/lib/interrupts/ep6ef_isr.c
+index e9ba6d54..28b2db39 100644
+--- a/fx2lib/lib/interrupts/ep6ef_isr.c
++++ b/fx2lib/lib/interrupts/ep6ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ef_isr() __interrupt(EP6EF_ISR){}
++void ep6ef_isr(void) __interrupt(EP6EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6ff_isr.c b/fx2lib/lib/interrupts/ep6ff_isr.c
+index 011fe871..051b6e29 100644
+--- a/fx2lib/lib/interrupts/ep6ff_isr.c
++++ b/fx2lib/lib/interrupts/ep6ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ff_isr() __interrupt(EP6FF_ISR){}
++void ep6ff_isr(void) __interrupt(EP6FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6isoerr_isr.c b/fx2lib/lib/interrupts/ep6isoerr_isr.c
+index 8c005777..efae2cfd 100644
+--- a/fx2lib/lib/interrupts/ep6isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep6isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6isoerr_isr() __interrupt(EP6ISOERR_ISR) {}
++void ep6isoerr_isr(void) __interrupt(EP6ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep6pf_isr.c b/fx2lib/lib/interrupts/ep6pf_isr.c
+index 52f6d738..dee40231 100644
+--- a/fx2lib/lib/interrupts/ep6pf_isr.c
++++ b/fx2lib/lib/interrupts/ep6pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6pf_isr() __interrupt(EP6PF_ISR){}
++void ep6pf_isr(void) __interrupt(EP6PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep6ping_isr.c b/fx2lib/lib/interrupts/ep6ping_isr.c
+index 5430f209..9ed855f7 100644
+--- a/fx2lib/lib/interrupts/ep6ping_isr.c
++++ b/fx2lib/lib/interrupts/ep6ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep6ping_isr() __interrupt(EP6PING_ISR) {}
++void ep6ping_isr(void) __interrupt(EP6PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8_isr.c b/fx2lib/lib/interrupts/ep8_isr.c
+index d415a3ec..8ebce9b8 100644
+--- a/fx2lib/lib/interrupts/ep8_isr.c
++++ b/fx2lib/lib/interrupts/ep8_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8_isr() __interrupt(EP8_ISR) {}
++void ep8_isr(void) __interrupt(EP8_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8ef_isr.c b/fx2lib/lib/interrupts/ep8ef_isr.c
+index d04d2376..508f49b9 100644
+--- a/fx2lib/lib/interrupts/ep8ef_isr.c
++++ b/fx2lib/lib/interrupts/ep8ef_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ef_isr() __interrupt(EP8EF_ISR){}
++void ep8ef_isr(void) __interrupt(EP8EF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8ff_isr.c b/fx2lib/lib/interrupts/ep8ff_isr.c
+index d1e5fcd7..88811d7d 100644
+--- a/fx2lib/lib/interrupts/ep8ff_isr.c
++++ b/fx2lib/lib/interrupts/ep8ff_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ff_isr() __interrupt(EP8FF_ISR){}
++void ep8ff_isr(void) __interrupt(EP8FF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8isoerr_isr.c b/fx2lib/lib/interrupts/ep8isoerr_isr.c
+index a7e8e0f9..fa5f54c5 100644
+--- a/fx2lib/lib/interrupts/ep8isoerr_isr.c
++++ b/fx2lib/lib/interrupts/ep8isoerr_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8isoerr_isr() __interrupt(EP8ISOERR_ISR) {}
++void ep8isoerr_isr(void) __interrupt(EP8ISOERR_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ep8pf_isr.c b/fx2lib/lib/interrupts/ep8pf_isr.c
+index 53dcdf27..245fd343 100644
+--- a/fx2lib/lib/interrupts/ep8pf_isr.c
++++ b/fx2lib/lib/interrupts/ep8pf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8pf_isr() __interrupt(EP8PF_ISR){}
++void ep8pf_isr(void) __interrupt(EP8PF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/ep8ping_isr.c b/fx2lib/lib/interrupts/ep8ping_isr.c
+index 5cf05dc7..56965e6a 100644
+--- a/fx2lib/lib/interrupts/ep8ping_isr.c
++++ b/fx2lib/lib/interrupts/ep8ping_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ep8ping_isr() __interrupt(EP8PING_ISR) {}
++void ep8ping_isr(void) __interrupt(EP8PING_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/errlimit_isr.c b/fx2lib/lib/interrupts/errlimit_isr.c
+index cf4e1f61..921b1def 100644
+--- a/fx2lib/lib/interrupts/errlimit_isr.c
++++ b/fx2lib/lib/interrupts/errlimit_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void errlimit_isr() __interrupt(ERRLIMIT_ISR) {}
++void errlimit_isr(void) __interrupt(ERRLIMIT_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/gpifdone_isr.c b/fx2lib/lib/interrupts/gpifdone_isr.c
+index ee5ce1f6..03f0bb5f 100644
+--- a/fx2lib/lib/interrupts/gpifdone_isr.c
++++ b/fx2lib/lib/interrupts/gpifdone_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void gpifdone_isr() __interrupt(GPIFDONE_ISR){}
++void gpifdone_isr(void) __interrupt(GPIFDONE_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/gpifwf_isr.c b/fx2lib/lib/interrupts/gpifwf_isr.c
+index e9941541..b220a9fe 100644
+--- a/fx2lib/lib/interrupts/gpifwf_isr.c
++++ b/fx2lib/lib/interrupts/gpifwf_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void gpifwf_isr() __interrupt(GPIFWF_ISR){}
++void gpifwf_isr(void) __interrupt(GPIFWF_ISR){}
+
+diff --git a/fx2lib/lib/interrupts/hispeed_isr.c b/fx2lib/lib/interrupts/hispeed_isr.c
+index 9daabc12..dcbd0e4b 100644
+--- a/fx2lib/lib/interrupts/hispeed_isr.c
++++ b/fx2lib/lib/interrupts/hispeed_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void hispeed_isr() __interrupt(HISPEED_ISR) {}
++void hispeed_isr(void) __interrupt(HISPEED_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/ibn_isr.c b/fx2lib/lib/interrupts/ibn_isr.c
+index aa0a7523..97fb05e8 100644
+--- a/fx2lib/lib/interrupts/ibn_isr.c
++++ b/fx2lib/lib/interrupts/ibn_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void ibn_isr() __interrupt(IBN_ISR) {}
++void ibn_isr(void) __interrupt(IBN_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sof_isr.c b/fx2lib/lib/interrupts/sof_isr.c
+index 64a409c4..8b0b8654 100644
+--- a/fx2lib/lib/interrupts/sof_isr.c
++++ b/fx2lib/lib/interrupts/sof_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sof_isr() __interrupt(SOF_ISR) {}
++void sof_isr(void) __interrupt(SOF_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/spare_isr.c b/fx2lib/lib/interrupts/spare_isr.c
+index 3b81fd20..effb7d02 100644
+--- a/fx2lib/lib/interrupts/spare_isr.c
++++ b/fx2lib/lib/interrupts/spare_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void spare_isr() __interrupt(RESERVED_ISR) {}
++void spare_isr(void) __interrupt(RESERVED_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sudav_isr.c b/fx2lib/lib/interrupts/sudav_isr.c
+index 4d36b59a..d5ed73bf 100644
+--- a/fx2lib/lib/interrupts/sudav_isr.c
++++ b/fx2lib/lib/interrupts/sudav_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sudav_isr() __interrupt(SUDAV_ISR) {}
++void sudav_isr(void) __interrupt(SUDAV_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/suspend_isr.c b/fx2lib/lib/interrupts/suspend_isr.c
+index cf08b28a..1f471179 100644
+--- a/fx2lib/lib/interrupts/suspend_isr.c
++++ b/fx2lib/lib/interrupts/suspend_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void suspend_isr() __interrupt(SUSPEND_ISR) {}
++void suspend_isr(void) __interrupt(SUSPEND_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/sutok_isr.c b/fx2lib/lib/interrupts/sutok_isr.c
+index 8c7368d2..9c424c67 100644
+--- a/fx2lib/lib/interrupts/sutok_isr.c
++++ b/fx2lib/lib/interrupts/sutok_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void sutok_isr() __interrupt(SUTOK_ISR) {}
++void sutok_isr(void) __interrupt(SUTOK_ISR) {}
+
+diff --git a/fx2lib/lib/interrupts/usbreset_isr.c b/fx2lib/lib/interrupts/usbreset_isr.c
+index 8888eede..5a91e080 100644
+--- a/fx2lib/lib/interrupts/usbreset_isr.c
++++ b/fx2lib/lib/interrupts/usbreset_isr.c
+@@ -17,5 +17,5 @@
+
+ #include <autovector.h>
+
+-void usbreset_isr() __interrupt(USBRESET_ISR) {}
++void usbreset_isr(void) __interrupt(USBRESET_ISR) {}
+
+diff --git a/fx2lib/lib/serial.c b/fx2lib/lib/serial.c
+index 3114d580..60eb0187 100644
+--- a/fx2lib/lib/serial.c
++++ b/fx2lib/lib/serial.c
+@@ -68,7 +68,7 @@ void sio0_init( WORD baud_rate ) __critical { // baud_rate max should be 57600 s
+
+ }
+
+-char getchar() {
++char getchar(void) {
+ char c;
+ while (!RI)
+ ;
+diff --git a/fx2lib/lib/setupdat.c b/fx2lib/lib/setupdat.c
+index 878f7b94..a1eb41d1 100644
+--- a/fx2lib/lib/setupdat.c
++++ b/fx2lib/lib/setupdat.c
+@@ -34,7 +34,7 @@ extern BOOL handle_vendorcommand(BYTE cmd);
+ extern BOOL handle_set_configuration(BYTE cfg);
+ extern BOOL handle_get_interface(BYTE ifc, BYTE* alt_ifc);
+ extern BOOL handle_set_interface(BYTE ifc,BYTE alt_ifc);
+-extern BYTE handle_get_configuration();
++extern BYTE handle_get_configuration(void);
+ extern BOOL handle_set_configuration(BYTE cfg);
+ extern void handle_reset_ep(BYTE ep);
+
+@@ -44,16 +44,16 @@ extern void handle_reset_ep(BYTE ep);
+
+
+ // GET_STATUS,
+-BOOL handle_get_status();
++BOOL handle_get_status(void);
+ // CLEAR_FEATURE,
+-BOOL handle_clear_feature();
++BOOL handle_clear_feature(void);
+ // 0x02 is reserved
+ // SET_FEATURE=0x03,
+-BOOL handle_set_feature();
++BOOL handle_set_feature(void);
+ // 0x04 is reserved
+ // SET_ADDRESS=0x05, // this is handled by EZ-USB core unless RENUM=0
+ // GET_DESCRIPTOR,
+-void handle_get_descriptor();
++void handle_get_descriptor(void);
+ // SET_DESCRIPTOR,
+ // GET_CONFIGURATION, // handled by callback
+ // SET_CONFIGURATION, // handled by callback
+@@ -68,7 +68,7 @@ void handle_get_descriptor();
+ handshake
+ */
+
+-void handle_setupdata() {
++void handle_setupdata(void) {
+ //printf ( "Handle setupdat: %02x\n", SETUPDAT[1] );
+
+ switch ( SETUPDAT[1] ) {
+@@ -156,7 +156,7 @@ __xdata BYTE* ep_addr(BYTE ep) { // bit 8 of ep_num is the direction
+ volatile BOOL self_powered=FALSE;
+ volatile BOOL remote_wakeup_allowed=FALSE;
+
+-BOOL handle_get_status() {
++BOOL handle_get_status(void) {
+
+ switch ( SETUPDAT[0] ) {
+
+@@ -201,7 +201,7 @@ BOOL handle_get_status() {
+ #define GF_DEVICE 0
+ #define GF_ENDPOINT 2
+
+-BOOL handle_clear_feature() {
++BOOL handle_clear_feature(void) {
+ //printf ( "Clear Feature\n" );
+ switch ( SETUPDAT[0] ) {
+ case GF_DEVICE:
+@@ -227,7 +227,7 @@ BOOL handle_clear_feature() {
+ return TRUE;
+ }
+
+-BOOL handle_set_feature() {
++BOOL handle_set_feature(void) {
+ printf ( "Set Feature %02x\n", SETUPDAT[0] );
+ switch ( SETUPDAT[0] ) {
+ case GF_DEVICE:
+@@ -299,7 +299,7 @@ void handle_hispeed(BOOL highspeed) {
+ * String
+ * Other-Speed
+ **/
+-void handle_get_descriptor() {
++void handle_get_descriptor(void) {
+ //printf ( "Get Descriptor\n" );
+
+ switch ( SETUPDAT[3] ) {
diff --git a/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.SlackBuild b/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.SlackBuild
index 72169f9aa7..04547b8cec 100644
--- a/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.SlackBuild
+++ b/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for sigrok fx2lafw firmware
-# Copyright 2019 Andrzej Telszewski, Szczecin
+# Copyright 2024 Andrzej Telszewski, Koszalin
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -32,9 +32,6 @@ PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -44,27 +41,31 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-set -e
+set -eu
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
+
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
+
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+chmod -R a-st,u+rwX,go-w+rX .
+
+patch -p1 < $CWD/patches/00-fx2lafw__silence_integer_overflow_compile_warnings.patch
+patch -p1 < $CWD/patches/01-fx2lib__Update___interrupt_syntax_for_sdcc_4.2.3.patch
+patch -p1 < $CWD/patches/02-fx2lafw__Update___interrupt_syntax_for_sdcc_4.2.3.patch
+patch -p1 < $CWD/patches/03-fx2lafw__Update___at_syntax_for_sdcc_4.2.3.patch
+patch -p1 < $CWD/patches/04-fx2lib_fix_SDCC_warning_283.patch
./configure --prefix=/usr
make
make install DESTDIR=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING{,.LESSER} INSTALL NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS ChangeLog COPYING{,.LESSER} NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.info b/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.info
index 45cf878407..ee2f6c3ab2 100644
--- a/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.info
+++ b/misc/sigrok-firmware-fx2lafw/sigrok-firmware-fx2lafw.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="sdcc"
MAINTAINER="Andrzej Telszewski"
-EMAIL="atelszewski@gmail.com"
+EMAIL="andrzej@telszewski.com"