Changeset 42202 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Jul 18, 2012 9:10:59 AM (13 years ago)
- Location:
- trunk/src/VBox/Devices/PC/BIOS
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/biosint.h
r40721 r42202 44 44 45 45 /* For functions called from assembly code. */ 46 #define BIOSCALL 46 #define BIOSCALL __cdecl 47 47 48 48 #define BX_ELTORITO_BOOT 1 -
trunk/src/VBox/Devices/PC/BIOS/boot.c
r41574 r42202 272 272 netboot_entry(); 273 273 } 274 275 276 274 else 275 { 276 //Found Normal Pnp ROM 277 277 print_boot_device(bootcd, bootlan, bootdrv); 278 278 int_enable(); /* Disabled as we were invoked via INT instruction. */ -
trunk/src/VBox/Devices/PC/BIOS/vds.h
r39559 r42202 1 1 /* Virtual DMA Services (VDS) */ 2 2 3 #define VDS_FLAGS_OFS 0x7B/* Offset of VDS flag byte in BDA. */4 #define VDS_PRESENT 0x20/* The VDS present bit. */3 #define VDS_FLAGS_OFS 0x7B /* Offset of VDS flag byte in BDA. */ 4 #define VDS_PRESENT 0x20 /* The VDS present bit. */ 5 5 6 6 /* The DMA descriptor data structure. */ 7 7 8 8 typedef struct { 9 uint32_t region_size;/* Region size in bytes. */10 uint32_t offset;/* Offset. */11 uint16_t seg_sel;/* Segment selector. */12 uint16_t buf_id;/* Buffer ID. */13 uint32_t phys_addr;/* Physical address. */9 uint32_t region_size; /* Region size in bytes. */ 10 uint32_t offset; /* Offset. */ 11 uint16_t seg_sel; /* Segment selector. */ 12 uint16_t buf_id; /* Buffer ID. */ 13 uint32_t phys_addr; /* Physical address. */ 14 14 } vds_dds; 15 15 … … 18 18 19 19 typedef struct { 20 uint32_t phys_addr;/* Physical address. */21 uint32_t size;/* Entry size. */20 uint32_t phys_addr; /* Physical address. */ 21 uint32_t size; /* Entry size. */ 22 22 } vds_sg; 23 23 … … 27 27 28 28 typedef struct { 29 uint32_t region_size;/* Region size in bytes. */30 uint32_t offset;/* Offset. */31 uint16_t seg_sel;/* Segment or selector. */32 uint16_t resvd;/* Reserved. */33 uint16_t num_avail;/* Number of entries available. */34 uint16_t num_used;/* Number of entries used. */29 uint32_t region_size; /* Region size in bytes. */ 30 uint32_t offset; /* Offset. */ 31 uint16_t seg_sel; /* Segment or selector. */ 32 uint16_t resvd; /* Reserved. */ 33 uint16_t num_avail; /* Number of entries available. */ 34 uint16_t num_used; /* Number of entries used. */ 35 35 union { 36 vds_sg sg[1];/* S/G entry array. */37 uint32_t pte[1]; 36 vds_sg sg[1]; /* S/G entry array. */ 37 uint32_t pte[1]; /* Page table entry array. */ 38 38 } u; 39 39 } vds_edds; … … 42 42 /* VDS services */ 43 43 44 #define VDS_SERVICE 44 #define VDS_SERVICE 0x81 45 45 46 #define VDS_GET_VERSION 0x02/* Get version */47 #define VDS_LOCK_BUFFER 0x03/* Lock DMA buffer region */48 #define VDS_UNLOCK_BUFFER 0x04/* Unlock DMA buffer region */49 #define VDS_SG_LOCK 0x05/* Scatter/gather lock region */50 #define VDS_SG_UNLOCK 0x06/* Scatter/gather unlock region */51 #define VDS_REQUEST_BUFFER 0x07/* Request DMA buffer */52 #define VDS_RELEASE_BUFFER 0x08/* Release DMA buffer */53 #define VDS_BUFFER_COPYIN 0x09/* Copy into DMA buffer */54 #define VDS_BUFFER_COPYOUT 0x0A/* Copy out of DMA buffer */55 #define VDS_DISABLE_DMA_XLAT 0x0B/* Disable DMA translation */56 #define VDS_ENABLE_DMA_XLAT 0x0C/* Enable DMA translation */46 #define VDS_GET_VERSION 0x02 /* Get version */ 47 #define VDS_LOCK_BUFFER 0x03 /* Lock DMA buffer region */ 48 #define VDS_UNLOCK_BUFFER 0x04 /* Unlock DMA buffer region */ 49 #define VDS_SG_LOCK 0x05 /* Scatter/gather lock region */ 50 #define VDS_SG_UNLOCK 0x06 /* Scatter/gather unlock region */ 51 #define VDS_REQUEST_BUFFER 0x07 /* Request DMA buffer */ 52 #define VDS_RELEASE_BUFFER 0x08 /* Release DMA buffer */ 53 #define VDS_BUFFER_COPYIN 0x09 /* Copy into DMA buffer */ 54 #define VDS_BUFFER_COPYOUT 0x0A /* Copy out of DMA buffer */ 55 #define VDS_DISABLE_DMA_XLAT 0x0B /* Disable DMA translation */ 56 #define VDS_ENABLE_DMA_XLAT 0x0C /* Enable DMA translation */ 57 57 58 58 /* VDS error codes */ 59 59 60 #define VDS_SUCCESS 0x00/* No error */61 #define VDS_ERR_NOT_CONTIG 0x01/* Region not contiguous */62 #define VDS_ERR_BOUNDRY_CROSS 0x02/* Rgn crossed phys align boundary */63 #define VDS_ERR_CANT_LOCK 0x03/* Unable to lock pages */64 #define VDS_ERR_NO_BUF 0x04/* No buffer available */65 #define VDS_ERR_RGN_TOO_BIG 0x05/* Region too large for buffer */66 #define VDS_ERR_BUF_IN_USE 0x06/* Buffer currently in use */67 #define VDS_ERR_RGN_INVALID 0x07/* Invalid memory region */68 #define VDS_ERR_RGN_NOT_LOCKED 0x08/* Region was not locked */69 #define VDS_ERR_TOO_MANY_PAGES 0x09/* Num pages greater than table len */70 #define VDS_ERR_INVALID_ID 0x0A/* Invalid buffer ID */71 #define VDS_ERR_BNDRY_VIOL 0x0B/* Buffer boundary violated */72 #define VDS_ERR_INVAL_DMACHN 0x0C/* Invalid DMA channel number */73 #define VDS_ERR_COUNT_OVRFLO 0x0D/* Disable count overflow */74 #define VDS_ERR_COUNT_UNDRFLO 0x0E/* Disable count underflow */75 #define VDS_ERR_UNSUPP_FUNC 0x0F/* Function not supported */76 #define VDS_ERR_BAD_FLAG 0x10/* Reserved flag bits set in DX */60 #define VDS_SUCCESS 0x00 /* No error */ 61 #define VDS_ERR_NOT_CONTIG 0x01 /* Region not contiguous */ 62 #define VDS_ERR_BOUNDRY_CROSS 0x02 /* Rgn crossed phys align boundary */ 63 #define VDS_ERR_CANT_LOCK 0x03 /* Unable to lock pages */ 64 #define VDS_ERR_NO_BUF 0x04 /* No buffer available */ 65 #define VDS_ERR_RGN_TOO_BIG 0x05 /* Region too large for buffer */ 66 #define VDS_ERR_BUF_IN_USE 0x06 /* Buffer currently in use */ 67 #define VDS_ERR_RGN_INVALID 0x07 /* Invalid memory region */ 68 #define VDS_ERR_RGN_NOT_LOCKED 0x08 /* Region was not locked */ 69 #define VDS_ERR_TOO_MANY_PAGES 0x09 /* Num pages greater than table len */ 70 #define VDS_ERR_INVALID_ID 0x0A /* Invalid buffer ID */ 71 #define VDS_ERR_BNDRY_VIOL 0x0B /* Buffer boundary violated */ 72 #define VDS_ERR_INVAL_DMACHN 0x0C /* Invalid DMA channel number */ 73 #define VDS_ERR_COUNT_OVRFLO 0x0D /* Disable count overflow */ 74 #define VDS_ERR_COUNT_UNDRFLO 0x0E /* Disable count underflow */ 75 #define VDS_ERR_UNSUPP_FUNC 0x0F /* Function not supported */ 76 #define VDS_ERR_BAD_FLAG 0x10 /* Reserved flag bits set in DX */ 77 77 78 78 /* VDS option flags */ 79 79 80 #define VDSF_AUTOCOPY 0x02/* Automatic copy to/from buffer */81 #define VDSF_NOALLOC 0x04/* Disable auto buffer allocation */82 #define VDSF_NOREMAP 0x08/* Disable auto remap feature */83 #define VDSF_NO64K 0x10/* Region can't cross 64K boundary */84 #define VDSF_NO128K 0x20/* Region can't cross 128K boundary */85 #define VDSF_COPYTBL 0x40/* Copy page table for S/G remap */86 #define VDSF_NPOK 0x80/* Allow non-present pages for S/G */80 #define VDSF_AUTOCOPY 0x02 /* Automatic copy to/from buffer */ 81 #define VDSF_NOALLOC 0x04 /* Disable auto buffer allocation */ 82 #define VDSF_NOREMAP 0x08 /* Disable auto remap feature */ 83 #define VDSF_NO64K 0x10 /* Region can't cross 64K boundary */ 84 #define VDSF_NO128K 0x20 /* Region can't cross 128K boundary */ 85 #define VDSF_COPYTBL 0x40 /* Copy page table for S/G remap */ 86 #define VDSF_NPOK 0x80 /* Allow non-present pages for S/G */ 87 87 88 88 /* Higher level routines for utilizing VDS. */
Note:
See TracChangeset
for help on using the changeset viewer.