Glad it worked. "mount --bind" is like a super "ln -s"; it works across "chroot" etc.
This said though it is a hack, u-boot and arch see you boot partition differently. arch sees "/boot" but u-boot sees "/".
Can understand you not wanting to dig in u-boot
... but if you get board the details ....
You can see much of the problem in /boot/boot.txt. It contains the lines:
$this->bbcode_second_pass_code('', 'load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage
load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}
load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img')
Or something similar (seems to vary from system to system - this is for beagleboard). You can see its loads the kernel,initrd, and device tree from the /boot directory - but u-boot doesn't see the /boot name ...
So most of the problem can be solved by just removing the "/boot" from the above lines.
But then there is the problem as to how does u-boot find /boot/boot.scr - and there its ticky, it must be hidden somewhere in the u-boot source code - but I'm not sure I've ever found it ...
EDIT: Found it:
http://git.denx.de/?p=u-boot.git;a=blob;f=include/config_distro_bootcmd.h if I read it correct it looks for boot.scr in boot_prefixes - and these are defined as "/" and "/boot".
Now if this is correct. Suggests that you can move your boot files up to the top of the boot directory (e.g. move /boot/boot to /boot); then make the modifications above (so u-boot doesn't look in /boot); and it stands half a chance of booting ...