(Logical change 1.68)
diff --git a/src/ia64/global-asm-ia64.S b/src/ia64/global-asm-ia64.S
index e69de29..9224173 100644
--- a/src/ia64/global-asm-ia64.S
+++ b/src/ia64/global-asm-ia64.S
@@ -0,0 +1,22 @@
+#ifndef UNW_REMOTE_ONLY
+
+/*
+ * Create a special unwind-table entry which makes it easy for an
+ * unwinder to locate the dynamic registration list. The special
+ * entry covers address range [0-0) and is therefore guaranteed to be
+ * the first in the unwind-table.
+ */
+ .global _U_dyn_info_list
+ .hidden _U_dyn_info_list
+
+ .section .IA_64.unwind_info,"a","progbits"
+.info: data8 (1<<48) | 1 /* v1, length==1 (8-byte word) */
+ data8 0 /* 8 empty .prologue directives (nops) */
+ data8 0 /* personality routine (ignored) */
+ string "dyn-list" /* lsda */
+ data8 @gprel(_U_dyn_info_list)
+ .previous
+ .section .IA_64.unwind, "a", "progbits"
+ data8 0, 0, @segrel(.info)
+
+#endif
diff --git a/tests/flush-cache.S b/tests/flush-cache.S
index e69de29..470d762 100644
--- a/tests/flush-cache.S
+++ b/tests/flush-cache.S
@@ -0,0 +1,33 @@
+#ifdef __ia64__
+
+ .global flush_cache
+
+ .proc flush_cache
+flush_cache:
+ .prologue
+ alloc r2=ar.pfs,2,0,0,0
+ add r8=31,in1 // round up to 32 byte-boundary
+ ;;
+ shr.u r8=r8,5 // we flush 32 bytes per iteration
+ ;;
+ add r8=-1,r8
+ .save ar.lc, r3
+ mov r3=ar.lc // save ar.lc
+ ;;
+ .body
+
+ mov ar.lc=r8
+ ;;
+.loop: fc in0 // issuable on M0 only
+ add in0=32,in0
+ br.cloop.sptk.few .loop
+ ;;
+ sync.i
+ ;;
+ srlz.i
+ ;;
+ mov ar.lc=r3 // restore ar.lc
+ br.ret.sptk.many rp
+ .endp flush_cache
+
+#endif