Linux Audio

Check our new training course

Loading...
v3.1
 
  1/*
  2 * OpenRISC Linux
  3 *
  4 * Linux architectural port borrowing liberally from similar works of
  5 * others.  All original copyrights apply as per the original source
  6 * declaration.
  7 *
  8 * OpenRISC implementation:
  9 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
 10 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
 11 * et al.
 12 *
 13 * This program is free software; you can redistribute it and/or modify
 14 * it under the terms of the GNU General Public License as published by
 15 * the Free Software Foundation; either version 2 of the License, or
 16 * (at your option) any later version.
 17 */
 18
 19#ifndef __ASM_OPENRISC_ELF_H
 20#define __ASM_OPENRISC_ELF_H
 21
 22/*
 23 * ELF register definitions..
 24 */
 25#include <linux/types.h>
 26#include <linux/ptrace.h>
 27
 28
 29/* The OR1K relocation types... not all relevant for module loader */
 30#define R_OR32_NONE	0
 31#define R_OR32_32	1
 32#define R_OR32_16	2
 33#define R_OR32_8	3
 34#define R_OR32_CONST	4
 35#define R_OR32_CONSTH	5
 36#define R_OR32_JUMPTARG	6
 37#define R_OR32_VTINHERIT 7
 38#define R_OR32_VTENTRY	8
 39
 40typedef unsigned long elf_greg_t;
 41
 42/*
 43 * Note that NGREG is defined to ELF_NGREG in include/linux/elfcore.h, and is
 44 * thus exposed to user-space.
 45 */
 46#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t))
 47typedef elf_greg_t elf_gregset_t[ELF_NGREG];
 48
 49/* A placeholder; OR32 does not have fp support yes, so no fp regs for now.  */
 50typedef unsigned long elf_fpregset_t;
 51
 52/* This should be moved to include/linux/elf.h */
 53#define EM_OR32         0x8472
 54#define EM_OPENRISC     92     /* OpenRISC 32-bit embedded processor */
 55
 56/*
 57 * These are used to set parameters in the core dumps.
 58 */
 59#define ELF_ARCH	EM_OR32
 60#define ELF_CLASS	ELFCLASS32
 61#define ELF_DATA	ELFDATA2MSB
 62
 63#ifdef __KERNEL__
 64
 65/*
 66 * This is used to ensure we don't load something for the wrong architecture.
 67 */
 68
 69#define elf_check_arch(x) \
 70	(((x)->e_machine == EM_OR32) || ((x)->e_machine == EM_OPENRISC))
 71
 72/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
 73   use of this is to invoke "./ld.so someprog" to test out a new version of
 74   the loader.  We need to make sure that it is out of the way of the program
 75   that it will "exec", and that there is sufficient room for the brk.  */
 76
 77#define ELF_ET_DYN_BASE         (0x08000000)
 78
 79/*
 80 * Enable dump using regset.
 81 * This covers all of general/DSP/FPU regs.
 82 */
 83#define CORE_DUMP_USE_REGSET
 84
 85#define ELF_EXEC_PAGESIZE	8192
 86
 87extern void dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt);
 88#define ELF_CORE_COPY_REGS(dest, regs) dump_elf_thread(dest, regs);
 89
 90/* This yields a mask that user programs can use to figure out what
 91   instruction set this cpu supports.  This could be done in userspace,
 92   but it's not easy, and we've already done it here.  */
 93
 94#define ELF_HWCAP	(0)
 95
 96/* This yields a string that ld.so will use to load implementation
 97   specific libraries for optimization.  This is more specific in
 98   intent than poking at uname or /proc/cpuinfo.
 99
100   For the moment, we have only optimizations for the Intel generations,
101   but that could change... */
102
103#define ELF_PLATFORM	(NULL)
104
105#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
106
107#endif /* __KERNEL__ */
108#endif
v5.4
 1/* SPDX-License-Identifier: GPL-2.0-or-later */
 2/*
 3 * OpenRISC Linux
 4 *
 5 * Linux architectural port borrowing liberally from similar works of
 6 * others.  All original copyrights apply as per the original source
 7 * declaration.
 8 *
 9 * OpenRISC implementation:
10 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
11 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
12 * et al.
 
 
 
 
 
13 */
 
14#ifndef __ASM_OPENRISC_ELF_H
15#define __ASM_OPENRISC_ELF_H
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
18#include <linux/types.h>
19#include <uapi/asm/elf.h>
 
 
 
 
 
 
 
 
 
 
20
21/*
22 * This is used to ensure we don't load something for the wrong architecture.
23 */
24
25#define elf_check_arch(x) \
26	(((x)->e_machine == EM_OR32) || ((x)->e_machine == EM_OPENRISC))
27
28/* This is the location that an ET_DYN program is loaded if exec'ed.  Typical
29   use of this is to invoke "./ld.so someprog" to test out a new version of
30   the loader.  We need to make sure that it is out of the way of the program
31   that it will "exec", and that there is sufficient room for the brk.  */
32
33#define ELF_ET_DYN_BASE         (0x08000000)
34
35/*
36 * Enable dump using regset.
37 * This covers all of general/DSP/FPU regs.
38 */
39#define CORE_DUMP_USE_REGSET
40
41#define ELF_EXEC_PAGESIZE	8192
42
43extern void dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt);
44#define ELF_CORE_COPY_REGS(dest, regs) dump_elf_thread(dest, regs);
45
46/* This yields a mask that user programs can use to figure out what
47   instruction set this cpu supports.  This could be done in userspace,
48   but it's not easy, and we've already done it here.  */
49
50#define ELF_HWCAP	(0)
51
52/* This yields a string that ld.so will use to load implementation
53   specific libraries for optimization.  This is more specific in
54   intent than poking at uname or /proc/cpuinfo.
55
56   For the moment, we have only optimizations for the Intel generations,
57   but that could change... */
58
59#define ELF_PLATFORM	(NULL)
60
 
 
 
61#endif