VirtualBox

Changeset 38848 in vbox


Ignore:
Timestamp:
Sep 23, 2011 1:27:55 PM (13 years ago)
Author:
vboxsync
Message:

Integrated basic AHCI support into new BIOS.

Location:
trunk/src/VBox/Devices/PC/BIOS-new
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/PC/BIOS-new/ata.c

    r38699 r38848  
    380380    AtaData->channels[1].irq     = 15;
    381381#endif
     382#if 0   //@todo - temporarily removed to avoid conflict with AHCI
    382383#if BX_MAX_ATA_INTERFACES > 2
    383384    AtaData->channels[2].iface   = ATA_IFACE_ISA;
     
    391392    AtaData->channels[3].iobase2 = 0x360;
    392393    AtaData->channels[3].irq     = 11;
     394#endif
    393395#endif
    394396#if BX_MAX_ATA_INTERFACES > 4
  • trunk/src/VBox/Devices/PC/BIOS-new/ebda.h

    r38828 r38848  
    211211    fdpt_t      fdpt1;
    212212
     213#if 0
    213214    unsigned char filler2[0xC4];
     215#else
     216    unsigned char filler2[0xC2];
     217    uint16_t    ahci_seg;
     218#endif
    214219
    215220    // ATA Driver data
     
    228233#ifdef VBOX_WITH_BIOS_AHCI
    229234//    ahci_t      ahci;
    230     uint16_t    SegAhci;    //@todo: rename...
     235//    uint16_t    ahci_seg;    //@todo: Someone is trashing the data here!?!
    231236#endif
    232237
  • trunk/src/VBox/Devices/PC/BIOS-new/makefile

    r38733 r38848  
    1616CFLAGS = -q -0 -wx -zu -s -oas -d1+ -ms
    1717DEFS   = -DVBOX -DVBOX_LANBOOT_SEG=0xE200 -DVBOX_VERSION_STRING=$(QUOTE)0.9$(QUOTE) &
    18  -DVBOX_WITH_SCSI
     18 -DVBOX_WITH_SCSI -DVBOX_WITH_BIOS_AHCI
    1919
    2020AFLAGS = -q -0 -wx
     
    3030OBJS =  bios.obj print.obj ata.obj floppy.obj eltorito.obj boot.obj &
    3131        keyboard.obj disk.obj serial.obj system.obj timepci.obj &
    32         ps2mouse.obj parallel.obj logo.obj scsi.obj pcibio32.obj orgs.obj
     32        ps2mouse.obj parallel.obj logo.obj scsi.obj ahci.obj &
     33        pcibio32.obj orgs.obj
    3334
    3435vbxbios.rom : vbxbios.bin
     
    4142         clname DATA segaddr=0xF000 segment _DATA &
    4243         clname CODE &
    43          segment _TEXT segaddr=0xF000 offset=0x1400 &
     44         segment _TEXT segaddr=0xF000 offset=0x1600 &
    4445         segment BIOS32 segaddr=0xF000 offset=0xDE00 &
    4546         segment BIOSSEG segaddr=0xF000 offset=0xE000 &
  • trunk/src/VBox/Devices/PC/BIOS-new/orgs.asm

    r38789 r38848  
    100100extrn           _cdemu_isactive:near
    101101extrn           _cdemu_emulated_drive:near
     102extrn           _ahci_int13:near
    102103extrn           _int13_harddisk:near
    103104extrn           _int13_harddisk_ext:near
     
    114115extrn           _int74_function:near
    115116extrn           _ata_init:near
     117extrn           _ahci_init:near
    116118extrn           _scsi_init:near
    117119extrn           _ata_detect:near
     
    153155public          hard_drive_post
    154156public          int13_legacy
     157public          ahci_int13_handler
    155158public          int70_handler
    156159public          int75_handler
     
    450453endif
    451454
    452                 call    _print_bios_banner
    453 
    454455                ;; floppy setup
    455456                call    floppy_post
     
    458459                call    hard_drive_post
    459460
     461                C_SETUP                 ; in case assembly code changed things
     462ifdef VBOX_WITH_BIOS_AHCI
     463                ; AHCI driver setup
     464                call    _ahci_init
     465endif
     466
     467                call    _print_bios_banner
     468
    460469                ;; El Torito floppy/hard disk emulation
    461                 C_SETUP                 ; in case assembly code changed things
    462470                call    _cdemu_init
    463471
     
    14821490include pirq.inc
    14831491
     1492ifdef VBOX_WITH_BIOS_AHCI
     1493
     1494ahci_int13_handler:
     1495                ;; allocate space for IRET frame used to call old INT 13h
     1496                push    ax
     1497                push    ax
     1498                push    ax
     1499
     1500                pusha
     1501                push    ds
     1502                push    es
     1503                push    0               ; Room for return value (default 0)
     1504                C_SETUP
     1505                call    _ahci_int13
     1506                pop     ax
     1507                pop     es
     1508                pop     ds
     1509                cmp     ax, 0           ; Check if interrupt was handled
     1510                je      ahci_int13_out
     1511
     1512                popa                    ; Restore caller's registers
     1513                iret                    ; Call old handler
     1514
     1515ahci_int13_out:
     1516                popa
     1517                add     sp, 6           ; Remove the IRET frame
     1518                iret
     1519               
     1520endif
    14841521
    14851522;; --------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette