OK, you can do what I do. Put careful loops like this in .S:
1: movb $0x30, %al movb $0x3f8, %dx outb %al, %dx jmp 1b
(or something; my memory is not that great)
the idea is to lock the cpu up but have output.
Then you move that loop further along in the .S until you find the problem.
I'm surprised at no serial out. It makes me think the initial assembly startup is quite wrong. The cbfs doesn't get involved until long after ram is up and working.
double check the jmp at fffffff0.
ron