BTW, the way I fixed this.
one I realized the problem was bounded by x86_asm.S, I just did the usual 'bisect via hlt'.
in other words, put hlt instructions in this code at various places until you isolate the failing instruction. If you don't have a debugger it works very well. Infinite loop if the hlt worked, INT #0 if it did not. Then you can center on where the problem is.
ron