Merge tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag
Pull new ImgTec Meta architecture from James Hogan:
"This adds core architecture support for Imagination's Meta processor
cores, followed by some later miscellaneous arch/metag cleanups and
fixes which I kept separate to ease review:
- Support for basic Meta 1 (ATP) and Meta 2 (HTP) core architecture
- A few fixes all over, particularly for symbol prefixes
- A few privilege protection fixes
- Several cleanups (setup.c includes, split out a lot of
metag_ksyms.c)
- Fix some missing exports
- Convert hugetlb to use vm_unmapped_area()
- Copy device tree to non-init memory
- Provide dma_get_sgtable()"
* tag 'metag-v3.9-rc1-v4' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag: (61 commits)
metag: Provide dma_get_sgtable()
metag: prom.h: remove declaration of metag_dt_memblock_reserve()
metag: copy devicetree to non-init memory
metag: cleanup metag_ksyms.c includes
metag: move mm/init.c exports out of metag_ksyms.c
metag: move usercopy.c exports out of metag_ksyms.c
metag: move setup.c exports out of metag_ksyms.c
metag: move kick.c exports out of metag_ksyms.c
metag: move traps.c exports out of metag_ksyms.c
metag: move irq enable out of irqflags.h on SMP
genksyms: fix metag symbol prefix on crc symbols
metag: hugetlb: convert to vm_unmapped_area()
metag: export clear_page and copy_page
metag: export metag_code_cache_flush_all
metag: protect more non-MMU memory regions
metag: make TXPRIVEXT bits explicit
metag: kernel/setup.c: sort includes
perf: Enable building perf tools for Meta
metag: add boot time LNKGET/LNKSET check
metag: add __init to metag_cache_probe()
...
This commit is contained in:
@@ -34,7 +34,7 @@ use strict;
|
||||
# $1 (first bracket) matches the dynamic amount of the stack growth
|
||||
#
|
||||
# use anything else and feel the pain ;)
|
||||
my (@stack, $re, $dre, $x, $xs);
|
||||
my (@stack, $re, $dre, $x, $xs, $funcre);
|
||||
{
|
||||
my $arch = shift;
|
||||
if ($arch eq "") {
|
||||
@@ -44,6 +44,7 @@ my (@stack, $re, $dre, $x, $xs);
|
||||
|
||||
$x = "[0-9a-f]"; # hex character
|
||||
$xs = "[0-9a-f ]"; # hex character or space
|
||||
$funcre = qr/^$x* <(.*)>:$/;
|
||||
if ($arch eq 'arm') {
|
||||
#c0008ffc: e24dd064 sub sp, sp, #100 ; 0x64
|
||||
$re = qr/.*sub.*sp, sp, #(([0-9]{2}|[3-9])[0-9]{2})/o;
|
||||
@@ -66,6 +67,10 @@ my (@stack, $re, $dre, $x, $xs);
|
||||
# 2b6c: 4e56 fb70 linkw %fp,#-1168
|
||||
# 1df770: defc ffe4 addaw #-28,%sp
|
||||
$re = qr/.*(?:linkw %fp,|addaw )#-([0-9]{1,4})(?:,%sp)?$/o;
|
||||
} elsif ($arch eq 'metag') {
|
||||
#400026fc: 40 00 00 82 ADD A0StP,A0StP,#0x8
|
||||
$re = qr/.*ADD.*A0StP,A0StP,\#(0x$x{1,8})/o;
|
||||
$funcre = qr/^$x* <[^\$](.*)>:$/;
|
||||
} elsif ($arch eq 'mips64') {
|
||||
#8800402c: 67bdfff0 daddiu sp,sp,-16
|
||||
$re = qr/.*daddiu.*sp,sp,-(([0-9]{2}|[3-9])[0-9]{2})/o;
|
||||
@@ -109,7 +114,6 @@ my (@stack, $re, $dre, $x, $xs);
|
||||
#
|
||||
# main()
|
||||
#
|
||||
my $funcre = qr/^$x* <(.*)>:$/;
|
||||
my ($func, $file, $lastslash);
|
||||
|
||||
while (my $line = <STDIN>) {
|
||||
|
||||
@@ -826,7 +826,8 @@ int main(int argc, char **argv)
|
||||
genksyms_usage();
|
||||
return 1;
|
||||
}
|
||||
if ((strcmp(arch, "h8300") == 0) || (strcmp(arch, "blackfin") == 0))
|
||||
if ((strcmp(arch, "h8300") == 0) || (strcmp(arch, "blackfin") == 0) ||
|
||||
(strcmp(arch, "metag") == 0))
|
||||
mod_prefix = "_";
|
||||
{
|
||||
extern int yydebug;
|
||||
|
||||
@@ -33,6 +33,13 @@
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifndef EM_METAG
|
||||
/* Remove this when these make it to the standard system elf.h. */
|
||||
#define EM_METAG 174
|
||||
#define R_METAG_ADDR32 2
|
||||
#define R_METAG_NONE 3
|
||||
#endif
|
||||
|
||||
static int fd_map; /* File descriptor for file being modified. */
|
||||
static int mmap_failed; /* Boolean flag. */
|
||||
static void *ehdr_curr; /* current ElfXX_Ehdr * for resource cleanup */
|
||||
@@ -341,6 +348,12 @@ do_file(char const *const fname)
|
||||
altmcount = "__gnu_mcount_nc";
|
||||
break;
|
||||
case EM_IA_64: reltype = R_IA64_IMM64; gpfx = '_'; break;
|
||||
case EM_METAG: reltype = R_METAG_ADDR32;
|
||||
altmcount = "_mcount_wrapper";
|
||||
rel_type_nop = R_METAG_NONE;
|
||||
/* We happen to have the same requirement as MIPS */
|
||||
is_fake_mcount32 = MIPS32_is_fake_mcount;
|
||||
break;
|
||||
case EM_MIPS: /* reltype: e_class */ gpfx = '_'; break;
|
||||
case EM_PPC: reltype = R_PPC_ADDR32; gpfx = '_'; break;
|
||||
case EM_PPC64: reltype = R_PPC64_ADDR64; gpfx = '_'; break;
|
||||
|
||||
Reference in New Issue
Block a user