Hi all, I have a question about option table; the utility "build_opt_tbl.c" will give us an option_table.c automatically, but where is the option_table [ ] used? How to control my Linuxbios go to fallback or normal image? We always run in fallback image. Can someone give me some suggestions? The code is in file reset_test.inc and cmos_failover.inc. The code total is " #define MCH_DRC 0x7C #define DRC_IC (1 << 29) /* If I have already booted once skip a bunch of initialization */ /* To see if I have already booted I check to see if memory * has been enabled. */ movl $MCH_DRC, %eax PCI_READ_CONFIG_DWORD testl $DRC_IC, %eax setnz %al testb %al, %al jz __failover_boot __failover_reset: movb $RTC_BOOT_BYTE, %al outb %al, $0x70 inb $0x71, %al testb $(1<<1), %al jnz __normal_image jmp __cpu_reset __failover_boot: /* See if the cmos clear jumper has been set */ movl $((RTC_DEVFN << 8) | GEN_PMCON_3), %eax PCI_READ_CONFIG_DWORD testl $RTC_FAILED, %eax jz __cs_test
/* There are no impossible values, no checksums * so just trust whatever value we have in the * cmos. */ __rtc_failed: movb $RTC_BOOT_BYTE, %al outb %al, $0x70 inb $0x71, %al andb $0xfc, %al outb %al, $0x71 jmp __cs_test
/* test the checksum */ __cs_test: movl $77,%ecx xor %ebx,%ebx movl $RTC_BOOT_BYTE, %edx 1: addl $1, %edx movl %edx, %eax outb %al, $0x70 inb $0x71, %al addl %eax,%ebx subl $1,%ecx jnz 1b not %ebx addl $1, %edx movl %edx, %eax outb %al, $0x70 inb $0x71, %al movb %al,%ch addl $1, %edx movl %edx, %eax outb %al, $0x70 inb $0x71, %al movb %ch,%ah cmpw %ax,%bx jz __rtc_ok /* Set to fall back mode */ movb $RTC_BOOT_BYTE, %al outb %al, $0x70 inb $0x71, %al andb $0xfc, %al outb %al, $0x71
/* The byte is o.k. see where to go */ __rtc_ok: movb $RTC_BOOT_BYTE, %al outb %al, $0x70 inb $0x71, %al
/* Transfer the boot bit from bit 0 to bit 1. * And clear bit 0 so that unless we say it works we * fallback to the other bios image immediately. */ movb %al, %bl andb $0xfc, %al andb $1, %bl shlb %bl orb %bl, %al outb %al, $0x71
testb $(1<<1), %al jnz __normal_image