1 | /* |
---|
2 | * Copyright (C) 2007 Michael Brown <mbrown@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 | } |
---|