[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] rombios: Simplify and clarify POST code a little.



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1217408531 -3600
# Node ID 9364212ad2b2e264076f87e26a29a1896057c70d
# Parent  8c8505e8e4e363c8b1d7258cd1687f41c10d0a7d
rombios: Simplify and clarify POST code a little.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
 tools/firmware/rombios/rombios.c |   66 +++++----------------------------------
 1 files changed, 9 insertions(+), 57 deletions(-)

diff -r 8c8505e8e4e3 -r 9364212ad2b2 tools/firmware/rombios/rombios.c
--- a/tools/firmware/rombios/rombios.c  Wed Jul 30 09:26:06 2008 +0100
+++ b/tools/firmware/rombios/rombios.c  Wed Jul 30 10:02:11 2008 +0100
@@ -739,7 +739,7 @@ typedef struct {
   // device tables are at 0x9ff00 -- 0x9ffff
   typedef struct {
     unsigned char ebda_size;
-    unsigned char s3_resume_flag;
+    unsigned char cmos_shutdown_status;
     unsigned char filler1[0x3B];
 
     // FDPT - Can be splitted in data members if needed
@@ -759,7 +759,7 @@ typedef struct {
     upcall_t upcall;
     } ebda_data_t;
   
-  #define EBDA_S3_RESUME_FLAG_OFFSET 1
+  #define EBDA_CMOS_SHUTDOWN_STATUS_OFFSET 1
   #define EbdaData ((ebda_data_t *) 0)
 
   // for access to the int13ext structure
@@ -2344,21 +2344,20 @@ s3_resume()
 {
     Bit32u s3_wakeup_vector;
     Bit16u s3_wakeup_ip, s3_wakeup_cs;
-    Bit8u s3_resume_flag;
+    Bit8u cmos_shutdown_status;
 
 ASM_START
     push ds
     push ax
     mov ax, #EBDA_SEG
     mov ds, ax
-    mov al, [EBDA_S3_RESUME_FLAG_OFFSET]
-    mov .s3_resume.s3_resume_flag[bp], al
-    mov byte ptr [EBDA_S3_RESUME_FLAG_OFFSET], #0
+    mov al, [EBDA_CMOS_SHUTDOWN_STATUS_OFFSET]
+    mov .s3_resume.cmos_shutdown_status[bp], al
     pop ax
     pop ds
 ASM_END
 
-    if (s3_resume_flag != CMOS_SHUTDOWN_S3)
+    if (cmos_shutdown_status != CMOS_SHUTDOWN_S3)
         return;
 
     s3_wakeup_vector = get_s3_waking_vector();
@@ -9840,52 +9839,9 @@ post:
 
   ;; Examine CMOS shutdown status.
   mov al, bl
-
-  ;; 0xFE S3 resume
-  cmp AL, #0xFE
-  jnz not_s3_resume
-
-  ;; set S3 resume flag
   mov dx, #EBDA_SEG
   mov ds, dx
-  mov [EBDA_S3_RESUME_FLAG_OFFSET], AL
-  jmp normal_post
-
-not_s3_resume:
-
-  ;; 0x00, 0x09, 0x0D+ = normal startup
-  cmp AL, #0x00
-  jz normal_post
-  cmp AL, #0x0d
-  jae normal_post
-  cmp AL, #0x09
-  je normal_post
-
-  ;; 0x05 = eoi + jmp via [0x40:0x67] jump
-  cmp al, #0x05
-  je  eoi_jmp_post
-
-  ;; Examine CMOS shutdown status.
-  ;;  0x01,0x02,0x03,0x04,0x06,0x07,0x08, 0x0a, 0x0b, 0x0c = Unimplemented 
shutdown status.
-  push bx
-  call _shutdown_status_panic
-
-#if 0 
-  HALT(__LINE__)
-  ;
-  ;#if 0
-  ;  0xb0, 0x20,       /* mov al, #0x20 */
-  ;  0xe6, 0x20,       /* out 0x20, al    ;send EOI to PIC */
-  ;#endif
-  ;
-  pop es
-  pop ds
-  popa
-  iret
-#endif
-
-normal_post:
-  ; case 0: normal startup
+  mov [EBDA_CMOS_SHUTDOWN_STATUS_OFFSET], AL
 
   cli
   mov  ax, #0xfffe
@@ -9903,12 +9859,6 @@ normal_post:
     stosw
 
   call _log_bios_start
-
-#ifdef HVMASSIST
-  call _enable_rom_write_access
-#endif
-
-  call _clobber_entry_point
 
   ;; set all interrupts to default handler
   mov  bx, #0x0000    ;; offset index
@@ -10102,6 +10052,8 @@ post_default_ints:
   out  0xa1, AL ;slave  pic: unmask IRQ 12, 13, 14
 
 #ifdef HVMASSIST
+  call _enable_rom_write_access
+  call _clobber_entry_point
   call _copy_e820_table
   call smbios_init
   call _disable_rom_write_access

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.