Index: libcfa/Makefile.dist.am
===================================================================
--- libcfa/Makefile.dist.am	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
+++ libcfa/Makefile.dist.am	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -0,0 +1,27 @@
+######################## -*- Mode: Makefile-Automake -*- ######################
+##
+## Cforall Version 1.0.0 Copyright (C) 2020 University of Waterloo
+##
+## The contents of this file are covered under the licence agreement in the
+## file "LICENCE" distributed with Cforall.
+##
+## Makefile.dist.am --
+##
+## Author           : Thierry Delisle
+## Created On       : Fri Aug dd 12:53:35 2020
+## Last Modified By :
+## Last Modified On :
+## Update Count     :
+###############################################################################
+
+AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
+ACLOCAL_AMFLAGS  = -I automake
+
+distdir:
+	@echo "Distributing libcfa from '@LIBCFA_1TARGET_DIR@'"
+	+make -C $(abs_top_builddir)/@LIBCFA_1TARGET_DIR@ distdir \
+	top_distdir=$(top_distdir) \
+	distdir=../$(distdir) \
+	am__remove_distdir=$$(am__remove_distdir) \
+	am__skip_length_check=$(am__skip_length_check) \
+	am__skip_mode_fix=$(am__skip_mode_fix)
Index: libcfa/prelude/Makefile.am
===================================================================
--- libcfa/prelude/Makefile.am	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/prelude/Makefile.am	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -22,4 +22,6 @@
 cfalibdir = ${CFA_LIBDIR}
 cfalib_DATA = gcc-builtins.cf builtins.cf extras.cf prelude.cfa bootloader.c defines.hfa
+
+EXTRA_DIST = bootloader.cf builtins.c builtins.def extras.c extras.regx extras.regx2 prelude-gen.cc prototypes.awk prototypes.c prototypes.sed sync-builtins.cf
 
 CC = @LOCAL_CFACC@
Index: libcfa/src/Makefile.am
===================================================================
--- libcfa/src/Makefile.am	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/Makefile.am	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -31,6 +31,6 @@
 # AM_CFAFLAGS for only cfa source
 # use -no-include-stdhdr to prevent rebuild cycles
-# The built sources must not depend on the installed headers
-AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
+# The built sources must not depend on the installed inst_headers_src
+AM_CFAFLAGS = -quiet -cfalib -I$(srcdir)/stdhdr -I$(srcdir)/concurrency $(if $(findstring ${gdbwaittarget}, ${@}), -XCFA --gdb) @CONFIG_CFAFLAGS@
 AM_CFLAGS = -g -Wall -Wno-unused-function -fPIC -fexceptions -pthread @ARCH_FLAGS@ @CONFIG_CFLAGS@
 AM_CCASFLAGS = -g -Wall -Wno-unused-function @ARCH_FLAGS@ @CONFIG_CFLAGS@
@@ -39,31 +39,90 @@
 #----------------------------------------------------------------------------------------------------------------
 if BUILDLIB
-headers_nosrc = bitmanip.hfa exception.hfa math.hfa gmp.hfa time_t.hfa clock.hfa \
-		bits/align.hfa bits/containers.hfa bits/defs.hfa bits/debug.hfa bits/locks.hfa \
-		containers/list.hfa containers/stackLockFree.hfa concurrency/iofwd.hfa
+inst_headers_nosrc = \
+	bitmanip.hfa \
+	clock.hfa \
+	exception.hfa \
+	gmp.hfa \
+	math.hfa \
+	time_t.hfa \
+	bits/align.hfa \
+	bits/containers.hfa \
+	bits/debug.hfa \
+	bits/defs.hfa \
+	bits/locks.hfa \
+	concurrency/iofwd.hfa \
+	containers/list.hfa \
+	containers/stackLockFree.hfa
 
-headers = common.hfa fstream.hfa heap.hfa iostream.hfa iterator.hfa limits.hfa rational.hfa \
-		time.hfa stdlib.hfa parseargs.hfa \
-		containers/maybe.hfa containers/pair.hfa containers/result.hfa containers/vector.hfa
+inst_headers_src = \
+	common.hfa \
+	fstream.hfa \
+	heap.hfa \
+	iostream.hfa \
+	iterator.hfa \
+	limits.hfa \
+	parseargs.hfa \
+	rational.hfa \
+	stdlib.hfa \
+	time.hfa \
+	containers/maybe.hfa \
+	containers/pair.hfa \
+	containers/result.hfa \
+	containers/vector.hfa
 
-libsrc = startup.cfa interpose.cfa bits/debug.cfa assert.cfa exception.c virtual.c ${headers:.hfa=.cfa}
+libsrc = ${inst_headers_src} ${inst_headers_src:.hfa=.cfa} \
+	assert.cfa \
+	bits/algorithm.hfa \
+	bits/debug.cfa \
+	exception.c \
+	exception.h \
+	interpose.cfa \
+	lsda.h \
+	startup.cfa \
+	startup.hfa \
+	virtual.c \
+	virtual.h
 
 # not all platforms support concurrency, add option do disable it
-thread_headers_nosrc = bits/random.hfa concurrency/invoke.h concurrency/kernel/fwd.hfa
+inst_thread_headers_nosrc = \
+	bits/random.hfa \
+	concurrency/invoke.h \
+	concurrency/kernel/fwd.hfa
 
-thread_headers = concurrency/coroutine.hfa concurrency/thread.hfa concurrency/kernel.hfa \
-		concurrency/monitor.hfa concurrency/mutex.hfa concurrency/exception.hfa
+inst_thread_headers_src = \
+	concurrency/coroutine.hfa \
+	concurrency/exception.hfa \
+	concurrency/kernel.hfa \
+	concurrency/monitor.hfa \
+	concurrency/mutex.hfa \
+	concurrency/thread.hfa
 
-thread_libsrc = concurrency/CtxSwitch-@ARCHITECTURE@.S concurrency/alarm.cfa \
-		concurrency/invoke.c concurrency/io.cfa concurrency/iocall.cfa \
-		concurrency/io/setup.cfa \
-		concurrency/kernel/startup.cfa concurrency/preemption.cfa \
-		concurrency/ready_queue.cfa concurrency/stats.cfa \
-		${thread_headers:.hfa=.cfa}
+thread_libsrc = ${inst_thread_headers_src} ${inst_thread_headers_src:.hfa=.cfa} \
+	bits/signal.hfa \
+	concurrency/alarm.cfa \
+	concurrency/alarm.hfa \
+	concurrency/CtxSwitch-@ARCHITECTURE@.S \
+	concurrency/invoke.c \
+	concurrency/io.cfa \
+	concurrency/io/setup.cfa \
+	concurrency/io/types.hfa \
+	concurrency/iocall.cfa \
+	concurrency/iofwd.hfa \
+	concurrency/kernel_private.hfa \
+	concurrency/kernel/startup.cfa \
+	concurrency/preemption.cfa \
+	concurrency/preemption.hfa \
+	concurrency/ready_queue.cfa \
+	concurrency/ready_subqueue.hfa \
+	concurrency/snzi.hfa \
+	concurrency/stats.cfa \
+	concurrency/stats.hfa \
+	concurrency/stats.hfa
+
 else
-headers =
-thread_headers =
-headers_nosrc =
-thread_headers_nosrc =
+inst_headers_src =
+inst_thread_headers_src =
+inst_headers_nosrc =
+inst_thread_headers_nosrc =
 libsrc =
 endif
@@ -115,5 +174,6 @@
 
 #----------------------------------------------------------------------------------------------------------------
-libcfa_la_SOURCES = prelude.cfa ${libsrc}
+libcfa_la_SOURCES = ${libsrc}
+nodist_libcfa_la_SOURCES = prelude.cfa
 libcfa_la_LDFLAGS = -version-info @CFA_VERSION@
 
@@ -124,5 +184,6 @@
 
 cfa_includedir = $(CFA_INCDIR)
-nobase_cfa_include_HEADERS = ${stdhdr} ${headers} ${headers_nosrc} ${thread_headers} ${thread_headers_nosrc}
+nobase_cfa_include_HEADERS = ${stdhdr} ${inst_headers_src} ${inst_headers_nosrc} ${inst_thread_headers_src} ${inst_thread_headers_nosrc}
+EXTRA_DIST = stdhdr
 
 #----------------------------------------------------------------------------------------------------------------
Index: libcfa/src/bits/defs.hfa
===================================================================
--- libcfa/src/bits/defs.hfa	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/bits/defs.hfa	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -10,6 +10,6 @@
 // Created On       : Thu Nov  9 13:24:10 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 13 22:00:23 2020
-// Update Count     : 19
+// Last Modified On : Wed Aug 26 16:22:32 2020
+// Update Count     : 20
 //
 
@@ -49,5 +49,9 @@
 
 static inline long long int rdtscl(void) {
-	#if defined( __aarch64__ )
+	#if defined( __i386 ) || defined( __x86_64 )
+	unsigned int lo, hi;
+	__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
+	return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
+	#elif defined( __aarch64__ ) || defined( __arm__ )
 	// https://github.com/google/benchmark/blob/v1.1.0/src/cycleclock.h#L116
 	long long int virtual_timer_value;
@@ -55,7 +59,5 @@
 	return virtual_timer_value;
 	#else
-	unsigned int lo, hi;
-	__asm__ __volatile__ ("rdtsc" : "=a"(lo), "=d"(hi));
-	return ( (unsigned long long)lo)|( ((unsigned long long)hi)<<32 );
+		#error unsupported hardware architecture
 	#endif // __ARM_ARCH
 }
Index: libcfa/src/concurrency/CtxSwitch-arm64.S
===================================================================
--- libcfa/src/concurrency/CtxSwitch-arm64.S	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/concurrency/CtxSwitch-arm64.S	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -2,11 +2,11 @@
 // Cforall Version 1.0.0 Copyright (C) 2016 University of Waterloo
 // 
-// CtxSwitch-arm.S -- 
+// CtxSwitch-arm64.S -- 
 // 
 // Author           : Peter A. Buhr
 // Created On       : Sun Aug 16 07:50:13 2020
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Aug 20 18:43:51 2020
-// Update Count     : 24
+// Last Modified On : Wed Aug 26 16:24:59 2020
+// Update Count     : 25
 // 
 
@@ -26,9 +26,9 @@
 #define SAVE		20 * 8
 
-	.file "CtxSwitch-arm.S"
+	.file "CtxSwitch-arm64.S"
 	.text
 	.align 2
 	.global __cfactx_switch
-	.type __cfactx_switch, @function
+	.type __cfactx_switch, %function
 __cfactx_switch:
 
@@ -91,5 +91,5 @@
 	.align 2
 	.global __cfactx_invoke_stub
-	.type __cfactx_invoke_stub, @function
+	.type __cfactx_invoke_stub, %function
 __cfactx_invoke_stub:
 	mov x0, x19							// load main as parameter 0
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/concurrency/kernel.cfa	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -10,6 +10,6 @@
 // Created On       : Tue Jan 17 12:27:26 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 14 15:23:00 2020
-// Update Count     : 69
+// Last Modified On : Mon Aug 31 07:08:20 2020
+// Update Count     : 71
 //
 
@@ -74,5 +74,9 @@
 		)
 
-#elif defined( __ARM_ARCH )
+#elif defined( __arm__ )
+	#define __x87_store
+	#define __x87_load
+
+#elif defined( __aarch64__ )
 	#define __x87_store		 \
 		uint32_t __fpcntl[2];    \
@@ -93,5 +97,5 @@
 
 #else
-	#error unknown hardware architecture
+	#error unsupported hardware architecture
 #endif
 
Index: libcfa/src/concurrency/preemption.cfa
===================================================================
--- libcfa/src/concurrency/preemption.cfa	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/concurrency/preemption.cfa	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 5 14:20:42 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 21 13:45:32 2020
-// Update Count     : 52
+// Last Modified On : Wed Aug 26 16:46:03 2020
+// Update Count     : 53
 //
 
@@ -56,8 +56,10 @@
 #elif defined( __x86_64 )
 #define CFA_REG_IP gregs[REG_RIP]
-#elif defined( __ARM_ARCH )
+#elif defined( __arm__ )
+#define CFA_REG_IP arm_pc
+#elif defined( __aarch64__ )
 #define CFA_REG_IP pc
 #else
-#error unknown hardware architecture
+#error unsupported hardware architecture
 #endif
 
Index: libcfa/src/exception.c
===================================================================
--- libcfa/src/exception.c	(revision 191a19015ebe9917f03b8a35a5f9e245085378e7)
+++ libcfa/src/exception.c	(revision 86c1f1c39dec46dad2d3904ab9144ce3de4805ab)
@@ -10,6 +10,6 @@
 // Created On       : Mon Jun 26 15:13:00 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 21 11:27:56 2020
-// Update Count     : 29
+// Last Modified On : Sat Aug 29 15:52:22 2020
+// Update Count     : 34
 //
 
@@ -18,12 +18,4 @@
 
 #include "exception.h"
-
-// Implementation of the secret header is hardware dependent.
-#if defined( __x86_64 ) || defined( __i386 )
-#elif defined( __ARM_ARCH )
-#warning FIX ME: check if anything needed for ARM
-#else
-#warning Exception Handling: No known architecture detected.
-#endif
 
 #include <stdlib.h>
@@ -34,5 +26,6 @@
 #include "stdhdr/assert.h"
 
-// FIX ME: temporary hack to keep ARM build working
+#if defined( __ARM_ARCH )
+#warning FIX ME: temporary hack to keep ARM build working
 #ifndef _URC_FATAL_PHASE1_ERROR
 #define _URC_FATAL_PHASE1_ERROR 3
@@ -41,4 +34,5 @@
 #define _URC_FATAL_PHASE2_ERROR 2
 #endif // ! _URC_FATAL_PHASE2_ERROR
+#endif // __ARM_ARCH
 
 #include "lsda.h"
@@ -626,3 +620,21 @@
 
 #pragma GCC pop_options
+
+#elif defined( __ARM_ARCH )
+_Unwind_Reason_Code __gcfa_personality_v0(
+		int version,
+		_Unwind_Action actions,
+		unsigned long long exception_class,
+		struct _Unwind_Exception * unwind_exception,
+		struct _Unwind_Context * unwind_context) {
+	return _URC_CONTINUE_UNWIND;
+}
+
+__attribute__((noinline))
+void __cfaehm_try_terminate(void (*try_block)(),
+		void (*catch_block)(int index, exception_t * except),
+		__attribute__((unused)) int (*match_block)(exception_t * except)) {
+}
+#else
+	#error unsupported hardware architecture
 #endif // __x86_64 || __i386
