Removed the cfi directives from the epilogue and used DW_CFA_same_value to indicate when LR is restored from the tmp register as Alan Modra suggested. I found that binutils 2.15 implemented .cfi_same_value but the cfi_same_value was not defined by ./sysdeps/generic/sysdep.h so I added that macro. I think this is better than .cfi_escape.