I ran into something like this not long ago. It might be that _start is too far away from the top of memory. Try editing src/cpu/x86/16bit/reset16.lds and change this:
_ROMTOP = (_start >= 0xffff0000) ? 0xfffffff0 : 0xffffffff8;
to this:
_ROMTOP = (_start >= 0xffff0000) ? 0xfffffff0 : 0xffffffff0;
Then re-build. If it builds successfully, that's the problem, and you'll have to juggle your code or reduce it so that _start ends up at 0xFFFF0000 or greater.
On an editorial note, it's nice that the build system catches this problem, but I really wish it did it in a way that made it more obvious what the problem is.
Steve