Skip to content
Snippets Groups Projects
Select Git revision
  • bab8233a1d17de222e83e0cbf8eb1d9d691adaf3
  • master default protected
  • early-display
  • variant-emmc-nvme-boot
  • 2023-01-25
  • v3
  • variant-emmc-nvme-boot
  • 2020-06-01
8 results

spltest_sandbox.c

Blame
  • Forked from Reform / reform-boundary-uboot
    Source project has a limited visibility.
    kallsyms.c 1.03 KiB
    /*
     * Helper functions for working with the builtin symbol table
     *
     * Copyright (c) 2008-2009 Analog Devices Inc.
     * Licensed under the GPL-2 or later.
     */
    
    #include <common.h>
    
    /* We need the weak marking as this symbol is provided specially */
    extern const char system_map[] __attribute__((weak));
    
    /* Given an address, return a pointer to the symbol name and store
     * the base address in caddr.  So if the symbol map had an entry:
     *		03fb9b7c_spi_cs_deactivate
     * Then the following call:
     *		unsigned long base;
     *		const char *sym = symbol_lookup(0x03fb9b80, &base);
     * Would end up setting the variables like so:
     *		base = 0x03fb9b7c;
     *		sym = "_spi_cs_deactivate";
     */
    const char *symbol_lookup(unsigned long addr, unsigned long *caddr)
    {
    	const char *sym, *csym;
    	char *esym;
    	unsigned long sym_addr;
    
    	sym = system_map;
    	csym = NULL;
    	*caddr = 0;
    
    	while (*sym) {
    		sym_addr = simple_strtoul(sym, &esym, 16);
    		sym = esym;
    		if (sym_addr > addr)
    			break;
    		*caddr = sym_addr;
    		csym = sym;
    		sym += strlen(sym) + 1;
    	}
    
    	return csym;
    }