Remove remnant of arm's ELF trampoline

The trampoline code used for loading gzipped a.out kernels on arm was
removed in r350436. A portion of this code allowed for DDB to find the
symbol tables when booting without loader(8), and some of this was
untouched in the removal. Remove it now.

Differential Revision:	https://reviews.freebsd.org/D24950
This commit is contained in:
Mitchell Horne 2020-05-31 14:43:04 +00:00
parent b7596ac187
commit cd9207569f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=361661
4 changed files with 4 additions and 66 deletions

View File

@ -352,13 +352,12 @@ vm_offset_t
fake_preload_metadata(struct arm_boot_params *abp __unused, void *dtb_ptr,
size_t dtb_size)
{
#ifdef DDB
vm_offset_t zstart = 0, zend = 0;
#endif
vm_offset_t lastaddr;
int i = 0;
static uint32_t fake_preload[35];
lastaddr = (vm_offset_t)&end;
fake_preload[i++] = MODINFO_NAME;
fake_preload[i++] = strlen("kernel") + 1;
strcpy((char*)&fake_preload[i++], "kernel");
@ -373,21 +372,6 @@ fake_preload_metadata(struct arm_boot_params *abp __unused, void *dtb_ptr,
fake_preload[i++] = MODINFO_SIZE;
fake_preload[i++] = sizeof(uint32_t);
fake_preload[i++] = (uint32_t)&end - KERNVIRTADDR;
#ifdef DDB
if (*(uint32_t *)KERNVIRTADDR == MAGIC_TRAMP_NUMBER) {
fake_preload[i++] = MODINFO_METADATA|MODINFOMD_SSYM;
fake_preload[i++] = sizeof(vm_offset_t);
fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 4);
fake_preload[i++] = MODINFO_METADATA|MODINFOMD_ESYM;
fake_preload[i++] = sizeof(vm_offset_t);
fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 8);
lastaddr = *(uint32_t *)(KERNVIRTADDR + 8);
zend = lastaddr;
zstart = *(uint32_t *)(KERNVIRTADDR + 4);
db_fetch_ksymtab(zstart, zend);
} else
#endif
lastaddr = (vm_offset_t)&end;
if (dtb_ptr != NULL) {
/* Copy DTB to KVA space and insert it into module chain. */
lastaddr = roundup(lastaddr, sizeof(int));

View File

@ -78,12 +78,6 @@ __ElfType(Auxinfo);
#define EF_ARM_EABI_VERSION_UNKNOWN 0
#define EF_ARM_EABI_FREEBSD_MIN 4
/*
* Magic number for the elf trampoline, chosen wisely to be an immediate
* value.
*/
#define MAGIC_TRAMP_NUMBER 0x5c000003
#define ET_DYN_LOAD_ADDR 0x500000
/* Flags passed in AT_HWCAP. */

View File

@ -84,14 +84,12 @@ static char linux_command_line[LBABI_MAX_COMMAND_LINE + 1];
static vm_offset_t
fake_preload_metadata(void *dtb_ptr, size_t dtb_size)
{
#ifdef DDB
vm_offset_t zstart = 0, zend = 0;
#endif
vm_offset_t lastaddr;
static char fake_preload[256];
caddr_t preload_ptr;
size_t size;
lastaddr = (vm_offset_t)&end;
preload_ptr = (caddr_t)&fake_preload[0];
size = 0;
@ -108,25 +106,7 @@ fake_preload_metadata(void *dtb_ptr, size_t dtb_size)
PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE);
PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t));
PRELOAD_PUSH_VALUE(uint64_t, (size_t)(&end - VM_MIN_KERNEL_ADDRESS));
#ifdef DDB
if (*(uint64_t *)VM_MIN_KERNEL_ADDRESS == MAGIC_TRAMP_NUMBER) {
PRELOAD_PUSH_VALUE(uint32_t, MODINFO_METADATA|MODINFOMD_SSYM);
PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t));
PRELOAD_PUSH_VALUE(uint64_t,
*(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 4));
PRELOAD_PUSH_VALUE(uint32_t, MODINFO_METADATA | MODINFOMD_ESYM);
PRELOAD_PUSH_VALUE(uint32_t, sizeof(vm_offset_t));
PRELOAD_PUSH_VALUE(uint64_t,
*(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 8));
lastaddr = *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 8);
zend = lastaddr;
zstart = *(uint64_t *)(VM_MIN_KERNEL_ADDRESS + 4);
db_fetch_ksymtab(zstart, zend);
} else
#endif
lastaddr = (vm_offset_t)&end;
if (dtb_ptr != NULL) {
/* Copy DTB to KVA space and insert it into module chain. */
lastaddr = roundup(lastaddr, sizeof(int));

View File

@ -729,9 +729,6 @@ vm_offset_t
fake_preload_metadata(struct riscv_bootparams *rvbp)
{
static uint32_t fake_preload[35];
#ifdef DDB
vm_offset_t zstart = 0, zend = 0;
#endif
vm_offset_t lastaddr;
size_t fake_size, dtb_size;
@ -750,6 +747,7 @@ fake_preload_metadata(struct riscv_bootparams *rvbp)
} while (0)
fake_size = 0;
lastaddr = (vm_offset_t)&end;
PRELOAD_PUSH_VALUE(uint32_t, MODINFO_NAME);
PRELOAD_PUSH_STRING("kernel");
@ -763,24 +761,6 @@ fake_preload_metadata(struct riscv_bootparams *rvbp)
PRELOAD_PUSH_VALUE(uint32_t, MODINFO_SIZE);
PRELOAD_PUSH_VALUE(uint32_t, sizeof(size_t));
PRELOAD_PUSH_VALUE(uint64_t, (size_t)((vm_offset_t)&end - KERNBASE));
#ifdef DDB
#if 0
/* RISCVTODO */
if (*(uint32_t *)KERNVIRTADDR == MAGIC_TRAMP_NUMBER) {
fake_preload[i++] = MODINFO_METADATA|MODINFOMD_SSYM;
fake_preload[i++] = sizeof(vm_offset_t);
fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 4);
fake_preload[i++] = MODINFO_METADATA|MODINFOMD_ESYM;
fake_preload[i++] = sizeof(vm_offset_t);
fake_preload[i++] = *(uint32_t *)(KERNVIRTADDR + 8);
lastaddr = *(uint32_t *)(KERNVIRTADDR + 8);
zend = lastaddr;
zstart = *(uint32_t *)(KERNVIRTADDR + 4);
db_fetch_ksymtab(zstart, zend);
} else
#endif
#endif
lastaddr = (vm_offset_t)&end;
/* Copy the DTB to KVA space. */
lastaddr = roundup(lastaddr, sizeof(int));