1/*- 2 * Copyright (c) 2008-2010 Rui Paulo 3 * Copyright (c) 2006 Marcel Moolenaar 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 12 unchanged lines hidden (view full) --- 21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include <sys/cdefs.h> |
29__FBSDID("$FreeBSD: stable/11/sys/boot/efi/loader/main.c 328889 2018-02-05 17:01:18Z kevans $"); |
30 31#include <sys/param.h> 32#include <sys/reboot.h> 33#include <sys/boot.h> 34#include <inttypes.h> 35#include <stand.h> 36#include <string.h> 37#include <setjmp.h> --- 460 unchanged lines hidden (view full) --- 498command_memmap(int argc, char *argv[]) 499{ 500 UINTN sz; 501 EFI_MEMORY_DESCRIPTOR *map, *p; 502 UINTN key, dsz; 503 UINT32 dver; 504 EFI_STATUS status; 505 int i, ndesc; |
506 char line[80]; |
507 static char *types[] = { 508 "Reserved", 509 "LoaderCode", 510 "LoaderData", 511 "BootServicesCode", 512 "BootServicesData", 513 "RuntimeServicesCode", 514 "RuntimeServicesData", --- 15 unchanged lines hidden (view full) --- 530 map = malloc(sz); 531 status = BS->GetMemoryMap(&sz, map, &key, &dsz, &dver); 532 if (EFI_ERROR(status)) { 533 printf("Can't read memory map\n"); 534 return (CMD_ERROR); 535 } 536 537 ndesc = sz / dsz; |
538 snprintf(line, sizeof(line), "%23s %12s %12s %8s %4s\n", |
539 "Type", "Physical", "Virtual", "#Pages", "Attr"); |
540 pager_open(); 541 if (pager_output(line)) { 542 pager_close(); 543 return (CMD_OK); 544 } |
545 546 for (i = 0, p = map; i < ndesc; 547 i++, p = NextMemoryDescriptor(p, dsz)) { 548 printf("%23s %012jx %012jx %08jx ", types[p->Type], |
549 (uintmax_t)p->PhysicalStart, (uintmax_t)p->VirtualStart, 550 (uintmax_t)p->NumberOfPages); |
551 if (p->Attribute & EFI_MEMORY_UC) 552 printf("UC "); 553 if (p->Attribute & EFI_MEMORY_WC) 554 printf("WC "); 555 if (p->Attribute & EFI_MEMORY_WT) 556 printf("WT "); 557 if (p->Attribute & EFI_MEMORY_WB) 558 printf("WB "); 559 if (p->Attribute & EFI_MEMORY_UCE) 560 printf("UCE "); 561 if (p->Attribute & EFI_MEMORY_WP) 562 printf("WP "); 563 if (p->Attribute & EFI_MEMORY_RP) 564 printf("RP "); 565 if (p->Attribute & EFI_MEMORY_XP) 566 printf("XP "); |
567 if (pager_output("\n")) 568 break; |
569 } 570 |
571 pager_close(); |
572 return (CMD_OK); 573} 574 575COMMAND_SET(configuration, "configuration", "print configuration tables", 576 command_configuration); 577 578static const char * 579guid_to_string(EFI_GUID *guid) --- 5 unchanged lines hidden (view full) --- 585 guid->Data4[1], guid->Data4[2], guid->Data4[3], guid->Data4[4], 586 guid->Data4[5], guid->Data4[6], guid->Data4[7]); 587 return (buf); 588} 589 590static int 591command_configuration(int argc, char *argv[]) 592{ |
593 char line[80]; |
594 UINTN i; 595 |
596 snprintf(line, sizeof(line), "NumberOfTableEntries=%lu\n", |
597 (unsigned long)ST->NumberOfTableEntries); |
598 pager_open(); 599 if (pager_output(line)) { 600 pager_close(); 601 return (CMD_OK); 602 } 603 |
604 for (i = 0; i < ST->NumberOfTableEntries; i++) { 605 EFI_GUID *guid; 606 607 printf(" "); 608 guid = &ST->ConfigurationTable[i].VendorGuid; 609 if (!memcmp(guid, &mps, sizeof(EFI_GUID))) 610 printf("MPS Table"); 611 else if (!memcmp(guid, &acpi, sizeof(EFI_GUID))) --- 9 unchanged lines hidden (view full) --- 621 else if (!memcmp(guid, &memtype, sizeof(EFI_GUID))) 622 printf("Memory Type Information Table"); 623 else if (!memcmp(guid, &debugimg, sizeof(EFI_GUID))) 624 printf("Debug Image Info Table"); 625 else if (!memcmp(guid, &fdtdtb, sizeof(EFI_GUID))) 626 printf("FDT Table"); 627 else 628 printf("Unknown Table (%s)", guid_to_string(guid)); |
629 snprintf(line, sizeof(line), " at %p\n", 630 ST->ConfigurationTable[i].VendorTable); 631 if (pager_output(line)) 632 break; |
633 } 634 |
635 pager_close(); |
636 return (CMD_OK); 637} 638 639 640COMMAND_SET(mode, "mode", "change or display EFI text modes", command_mode); 641 642static int 643command_mode(int argc, char *argv[]) --- 415 unchanged lines hidden --- |