1ca987d46SWarner Losh /*- 2ca987d46SWarner Losh * Copyright (c) 2006 Marcel Moolenaar 3ca987d46SWarner Losh * All rights reserved. 4ca987d46SWarner Losh * 5ca987d46SWarner Losh * Redistribution and use in source and binary forms, with or without 6ca987d46SWarner Losh * modification, are permitted provided that the following conditions 7ca987d46SWarner Losh * are met: 8ca987d46SWarner Losh * 9ca987d46SWarner Losh * 1. Redistributions of source code must retain the above copyright 10ca987d46SWarner Losh * notice, this list of conditions and the following disclaimer. 11ca987d46SWarner Losh * 2. Redistributions in binary form must reproduce the above copyright 12ca987d46SWarner Losh * notice, this list of conditions and the following disclaimer in the 13ca987d46SWarner Losh * documentation and/or other materials provided with the distribution. 14ca987d46SWarner Losh * 15ca987d46SWarner Losh * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16ca987d46SWarner Losh * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 17ca987d46SWarner Losh * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 18ca987d46SWarner Losh * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 19ca987d46SWarner Losh * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 20ca987d46SWarner Losh * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 21ca987d46SWarner Losh * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 22ca987d46SWarner Losh * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23ca987d46SWarner Losh * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 24ca987d46SWarner Losh * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25ca987d46SWarner Losh */ 26ca987d46SWarner Losh 27ca987d46SWarner Losh #include <stand.h> 28ca987d46SWarner Losh #include <bootstrap.h> 29ca987d46SWarner Losh #include <efi.h> 30ca987d46SWarner Losh #include <efilib.h> 313d384d51SWarner Losh #include <efizfs.h> 32ca987d46SWarner Losh 334914ee11SToomas Soome extern struct devsw vdisk_dev; 344914ee11SToomas Soome 355984246fSYongbo Yao #ifdef MD_IMAGE_SIZE 365984246fSYongbo Yao extern struct devsw md_dev; 375984246fSYongbo Yao #endif 385984246fSYongbo Yao 39ca987d46SWarner Losh struct devsw *devsw[] = { 40ca987d46SWarner Losh &efipart_fddev, 41ca987d46SWarner Losh &efipart_cddev, 42ca987d46SWarner Losh &efipart_hddev, 431ee03da2SRebecca Cran &efihttp_dev, /* ordering with efinet_dev matters */ 44be4890f7SRuslan Bukin #if defined(LOADER_NET_SUPPORT) 45ca987d46SWarner Losh &efinet_dev, 46be4890f7SRuslan Bukin #endif 474914ee11SToomas Soome &vdisk_dev, 48ca987d46SWarner Losh #ifdef EFI_ZFS_BOOT 49ca987d46SWarner Losh &zfs_dev, 50ca987d46SWarner Losh #endif 515984246fSYongbo Yao #ifdef MD_IMAGE_SIZE 525984246fSYongbo Yao &md_dev, 535984246fSYongbo Yao #endif 54ca987d46SWarner Losh NULL 55ca987d46SWarner Losh }; 56ca987d46SWarner Losh 57ca987d46SWarner Losh struct fs_ops *file_system[] = { 58ca987d46SWarner Losh #ifdef EFI_ZFS_BOOT 59ca987d46SWarner Losh &zfs_fsops, 60ca987d46SWarner Losh #endif 61ca987d46SWarner Losh &dosfs_fsops, 62ca987d46SWarner Losh &ufs_fsops, 63ca987d46SWarner Losh &cd9660_fsops, 641ee03da2SRebecca Cran &efihttp_fsops, 65ca987d46SWarner Losh &tftp_fsops, 66ca987d46SWarner Losh &nfs_fsops, 67ca987d46SWarner Losh &gzipfs_fsops, 68ca987d46SWarner Losh &bzipfs_fsops, 69ca987d46SWarner Losh NULL 70ca987d46SWarner Losh }; 71ca987d46SWarner Losh 72ca987d46SWarner Losh struct netif_driver *netif_drivers[] = { 73be4890f7SRuslan Bukin #if defined(LOADER_NET_SUPPORT) 74ca987d46SWarner Losh &efinetif, 75be4890f7SRuslan Bukin #endif 76ca987d46SWarner Losh NULL 77ca987d46SWarner Losh }; 78ca987d46SWarner Losh 79ca987d46SWarner Losh extern struct console efi_console; 802f131435SWarner Losh extern struct console eficom; 81f93416d6SWarner Losh #if defined(__aarch64__) && __FreeBSD_version < 1500000 82f93416d6SWarner Losh /* Hack for backward compatibility -- but only for a while */ 83f93416d6SWarner Losh extern struct console comconsole; 84f93416d6SWarner Losh #endif 85c16e08e5SWarner Losh #if defined(__amd64__) 862f131435SWarner Losh extern struct console comconsole; 87ca987d46SWarner Losh extern struct console nullconsole; 88ca987d46SWarner Losh extern struct console spinconsole; 89ca987d46SWarner Losh #endif 90ca987d46SWarner Losh 91ca987d46SWarner Losh struct console *consoles[] = { 92ca987d46SWarner Losh &efi_console, 932f131435SWarner Losh &eficom, 94f93416d6SWarner Losh #if defined(__aarch64__) && __FreeBSD_version < 1500000 95f93416d6SWarner Losh &comconsole, 96f93416d6SWarner Losh #endif 97c16e08e5SWarner Losh #if defined(__amd64__) 982f131435SWarner Losh &comconsole, 99ca987d46SWarner Losh &nullconsole, 100ca987d46SWarner Losh &spinconsole, 101ca987d46SWarner Losh #endif 102ca987d46SWarner Losh NULL 103ca987d46SWarner Losh }; 104