2N/A * GRUB -- GRand Unified Bootloader 2N/A * Copyright (C) 2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. 2N/A * GRUB is free software: you can redistribute it and/or modify 2N/A * it under the terms of the GNU General Public License as published by 2N/A * the Free Software Foundation, either version 3 of the License, or 2N/A * (at your option) any later version. 2N/A * GRUB is distributed in the hope that it will be useful, 2N/A * but WITHOUT ANY WARRANTY; without even the implied warranty of 2N/A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2N/A * GNU General Public License for more details. 2N/A * You should have received a copy of the GNU General Public License 2N/A#
define SF "SmartFirmware(tm)" 2N/A#
define OHW "PPC Open Hack'Ware" 2N/A /* Broken in all versions */ 2N/A /* There are two incompatible ways of checking the version number. Try 2N/A /* It is tempting to implement a version parser to set the flags for 2N/A e.g. 1.3 and below. However, there's a special situation here. 2N/A 3rd party updates which fix the partition bugs are common, and for 2N/A some reason their fixes aren't being merged into trunk. So for 2N/A example we know that 1.2 and 1.3 are broken, but there's 1.2.99 2N/A and 1.3.99 which are known good (and applying this workaround 2N/A would cause breakage). */ 2N/A /* OLPC / XO laptops have three kinds of storage devices: 2N/A - NAND flash. These are accessible via OFW callbacks, but: 2N/A - Follow strange semantics, imposed by hardware constraints. 2N/A - Its ABI is undocumented, and not stable. 2N/A They lack "device_type" property, which conveniently makes GRUB 2N/A - USB drives. Not accessible, because OFW shuts down the controller 2N/A in order to prevent collisions with applications accessing it 2N/A directly. Even worse, attempts to access it will NOT return 2N/A control to the caller, so we have to avoid probing them. 2N/A - SD cards. These work fine. 2N/A To avoid breakage, we only need to skip USB probing. However, 2N/A since detecting SD cards is more reliable, we do that instead. 2N/A /* OpenFirmware hangs on qemu if one requests any memory below 1.5 MiB. */