diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2008-03-12 20:57:08 -0400 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2008-03-12 20:57:08 -0400 |
commit | 63ccc13b70190d0079f40b369e6c8ab81737f62b (patch) | |
tree | fadcf9d98788d3a2d9017c2d7d34d42c6deed27b | |
parent | 74799df6e977ffb14a2569e40fd19d262e84b0bb (diff) | |
download | seabios-63ccc13b70190d0079f40b369e6c8ab81737f62b.tar.gz |
Move ata_detect call to 32bit code.
It's more natural to call the detect code from post. It does require
some of the ATA support code be compiled in twice (once in 32bit mode
and once in 16 bit), however that only leads to a small increase in
total C code (~250 bytes).
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/boot.c | 11 | ||||
-rw-r--r-- | src/post.c | 11 |
3 files changed, 9 insertions, 15 deletions
@@ -10,7 +10,7 @@ OUT=out/ # Source files SRC16=floppy.c disk.c system.c clock.c serial.c kbd.c mouse.c output.c \ boot.c ata.c cdrom.c apm.c util.c -SRC32=post.c output.c rombios32.c util.c +SRC32=post.c output.c rombios32.c util.c ata.c TABLESRC=font.c cbt.c floppy_dbt.c cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \ @@ -206,14 +206,3 @@ handle_19() debug_enter(NULL); do_boot(0); } - -// Called from 32bit code - start boot process -void VISIBLE16 -begin_boot() -{ - if (CONFIG_ATA) - ata_detect(); - struct bregs br; - memset(&br, 0, sizeof(br)); - call16_int(0x19, &br); -} @@ -11,6 +11,7 @@ #include "cmos.h" // CMOS_* #include "util.h" // memset #include "biosvar.h" // struct bios_data_area_s +#include "ata.h" #define bda ((struct bios_data_area_s *)0) #define ebda ((struct extended_bios_data_area_s *)(EBDA_SEG<<4)) @@ -532,19 +533,23 @@ post() floppy_drive_post(); hard_drive_post(); - if (CONFIG_ATA) + if (CONFIG_ATA) { ata_init(); + ata_detect(); + } init_boot_vectors(); - // XXX - original bios calls ata_detect before rom scan. rom_scan(0xc8000, 0xe0000); // reset the memory (some boot loaders such as syslinux suppose // that the memory is set to zero) memset((void*)0x40000, 0, 0x40000); // XXX - shouldn't use globals - callrom(SEG_BIOS, OFFSET_begin_boot); + // Invoke int 19 to start boot process. + struct bregs br; + memset(&br, 0, sizeof(br)); + call16_int(0x19, &br); } static void |