All pastes #437364 Raw Edit

Mine

public text v1 · immutable
·published 2007-04-13 00:15 UTC
rendered paste body
/* **********************************************************
 * Copyright 2006 VMware, Inc.
 *
 * This file is part of the VMI option ROM.
 * 
 * The VMI option ROM is free software; you can redistribute it and/or
 * modify it under the terms of version 2 of the GNU General Public
 * License as published by the Free Software Foundation.
 * 
 * The VMI option ROM is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with the VMI option ROM; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 * 02110-1301, USA
 * **********************************************************/

#define VMI_API_REV_MINOR 0x00
#define VMI_API_REV_MAJOR 0x03
#define PCI_VENDOR_ID_VMWARE	0x15ad
#define PCI_DEVICE_ID_VMWARE_VMI	0x801
#define PCI_OPDS_REVISION	0
#define PCI_DEVICE_VMI_CLASS	0x5
#define PCI_DEVICE_VMI_INTERFACE	0
#define PCI_DEVICE_VMI_SUBCLASS	0x80
#define PCI_OPDS_CODETYPE_X86	0
#define PCI_OPDS_INDICATOR_EOL	0x80
#define ROM_REV_MAJOR         0
#define ROM_REV_MINOR         3
#define PCI_OPDS_INDICATOR_IPLDEV	0x4
	
.global start

.section .text
start:	
               .byte   0x55,0xAA                       // ROM signature
               .byte   _romChunks                      // size in 512b chunks
	       .byte 0x90, 0x90, 0x90, 0x90            // entry point
	       .byte 0
               .ascii  "cVmi"                          // VMI signature
               .byte   VMI_API_REV_MINOR               // minor version
               .byte   VMI_API_REV_MAJOR               // major version
               .byte   2
	       .byte   0
	       .long   0
               .word   0
               .word   (license - start)
	       .word   (romPciHeader - start)
	       .word   (romPnpHeader - start)
	       .long   0
	       .fill   96
	       jmp vmiInit
	       .align 8
	       jmp vmiGetRelocationInfo
	       .align 8
license:       .ascii "GPL\0"

		.align 4
romPciHeader:
		.ascii "PCIR"
		.word PCI_VENDOR_ID_VMWARE
		.word PCI_DEVICE_ID_VMWARE_VMI
		.word 0
		.word romPciHeaderEnd - romPciHeader
               .byte   PCI_OPDS_REVISION              // structure rev
               .long   PCI_DEVICE_VMI_CLASS           // device class
               .byte   PCI_DEVICE_VMI_SUBCLASS        // device subclass
               .byte   PCI_DEVICE_VMI_INTERFACE       // device interface
               .word   _romChunks                     // image length
               .byte   ROM_REV_MINOR                  // minor revision
               .byte   ROM_REV_MAJOR                  // major revision
               .byte   PCI_OPDS_CODETYPE_X86          // x86 binary
               .byte   PCI_OPDS_INDICATOR_EOL         // last ROM
               .word   0                              // reserved
romPciHeaderEnd:	

romMsg:
               .ascii "VMI option ROM revision " 
               .ascii "\r\nHypervisor API version " 
               .ascii "\r\nCopyright (c) 2005, VMware, Inc.\r\n"
romMsgEnd:

romStrap:
               lret

		.align 16
romPnpHeader:		
               .ascii  "$PnP"                            // signature
               .byte   1                                 // revision
               .byte   (romPnpHeaderEnd-romPnpHeader)/16 // size
               .word   0                                 // next header
               .byte   0                                 // reserved
               .byte   0                                 // checksum
               .long   PCI_DEVICE_ID_VMWARE_VMI          // device ID
               .word   (romManufacturer - start)         // mfr string
               .word   (romProduct - start)              // product string 
               .byte   0,0,0                             // device type
               .byte   PCI_OPDS_INDICATOR_IPLDEV         // IPL flags
               .word   0                                 // BCV
               .word   0                                 // DV
               .word   (romStrap - start)                // BEV
               .word   0                                 // reserved
               .word   0                                 // SRV
               .align  16
romPnpHeaderEnd:

romManufacturer:
               .ascii  "Anthony Liguori"
               .byte   0

romProduct:
               .ascii  "QEMU VMI ROM"
               .byte   0


vmiInit:	xorl %eax, %eax
		ret

vmiGetRelocationInfo:
		xorl %eax, %eax
		xorl %edx, %edx
		ret
end: