1 /* 2 * Copyright (C) 2007 Michael Brown <mbrown (at) fensystems.co.uk>. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License as 6 * published by the Free Software Foundation; either version 2 of the 7 * License, or any later version. 8 * 9 * This program is distributed in the hope that it will be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 17 */ 18 19 FILE_LICENCE ( GPL2_OR_LATER ); 20 21 #include <realmode.h> 22 #include <gpxe/aoe.h> 23 #include <gpxe/netdevice.h> 24 #include <gpxe/abft.h> 25 26 /** @file 27 * 28 * AoE Boot Firmware Table 29 * 30 */ 31 32 #define abftab __use_data16 ( abftab ) 33 /** The aBFT used by gPXE */ 34 struct abft_table __data16 ( abftab ) __attribute__ (( aligned ( 16 ) )) = { 35 /* ACPI header */ 36 .acpi = { 37 .signature = ABFT_SIG, 38 .length = sizeof ( abftab ), 39 .revision = 1, 40 .oem_id = "FENSYS", 41 .oem_table_id = "gPXE", 42 }, 43 }; 44 45 /** 46 * Fill in all variable portions of aBFT 47 * 48 * @v aoe AoE session 49 */ 50 void abft_fill_data ( struct aoe_session *aoe ) { 51 52 /* Fill in boot parameters */ 53 abftab.shelf = aoe->major; 54 abftab.slot = aoe->minor; 55 memcpy ( abftab.mac, aoe->netdev->ll_addr, sizeof ( abftab.mac ) ); 56 57 /* Update checksum */ 58 acpi_fix_checksum ( &abftab.acpi ); 59 60 DBG ( "AoE boot firmware table:\n" ); 61 DBG_HD ( &abftab, sizeof ( abftab ) ); 62 } 63