Hi Roy,
Here are some very quick notes on what I found on writing UEFI applications.
I found a library called "gnuefi" which allows building EFI applications apart from the Tianocore build tree. It looks interesting, but has not been ported to ARM. I don't yet know if it is worthwhile pursuing.
http://gnu-efi.sourceforge.net/
As mentioned, the Linux kernel has an EFI stub already. I could tell you which files to look at, but really just doing a "git grep EFI_STUB" in the kernel tree will show you all the files that you need to care about. :-)
You'll need to figure out how to get a UEFI PE-COFF header into the LInux kernel zImage wrapper. It shouldn't be too hard. You'll need to look at the startup code in arch/arm/boot/compressed/head.S. The PE-COFF header will need to go somewhere after the start: label. You should be able to see the existing LInux kernel "header" (not much of a header, more of a magic number) about 10 lines down from the start label.
That's all I can write at the moment. We can talk more tomorrow.
g.