One of the hard_reset() functions are wrong. The two files don't agree:
src/mainboard/tyan/s2895/auto.c
src/southbridge/nvidia/ck804/ck804_reset.c
I think auto.c is correct, but I'd suggest changing it to:
static void hard_reset(void)
{
set_bios_reset();
pci_write_config32(PCI_DEV(1, CK804_DEVN_BASE + 0x1, 0), 0xe8, 0x0);
/* hard reset */
outb(0x0a, 0x0cf9);
outb(0x0e, 0x0cf9);
L1: goto L1; /* loop till reset */
}