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