I am not sure you have access to some kind of XDP or Jtag, but an general
idea is after romcc complied the code may looks different. You may use objdump to double check that, such as compare the disasemble on DUT and disasemble from objdump.
Well the first suspect was .S file so it does not go thru C compiler. It was also skylake platform so it would not be romcc even for bootblock.
Sometimes system watchdogs can fool you to believe a fault between two POST codes, when it's really hitting some timeout.
Kyösti