162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * OpenRISC Linux 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Linux architectural port borrowing liberally from similar works of 662306a36Sopenharmony_ci * others. All original copyrights apply as per the original source 762306a36Sopenharmony_ci * declaration. 862306a36Sopenharmony_ci * 962306a36Sopenharmony_ci * OpenRISC implementation: 1062306a36Sopenharmony_ci * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com> 1162306a36Sopenharmony_ci * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> 1262306a36Sopenharmony_ci * et al. 1362306a36Sopenharmony_ci * 1462306a36Sopenharmony_ci * This program is free software; you can redistribute it and/or modify 1562306a36Sopenharmony_ci * it under the terms of the GNU General Public License as published by 1662306a36Sopenharmony_ci * the Free Software Foundation; either version 2 of the License, or 1762306a36Sopenharmony_ci * (at your option) any later version. 1862306a36Sopenharmony_ci */ 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#ifndef _UAPI__ASM_OPENRISC_ELF_H 2162306a36Sopenharmony_ci#define _UAPI__ASM_OPENRISC_ELF_H 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/* 2462306a36Sopenharmony_ci * This files is partially exported to userspace. This allows us to keep 2562306a36Sopenharmony_ci * the ELF bits in one place which should assist in keeping the kernel and 2662306a36Sopenharmony_ci * userspace in sync. 2762306a36Sopenharmony_ci */ 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci/* 3062306a36Sopenharmony_ci * ELF register definitions.. 3162306a36Sopenharmony_ci */ 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci/* for struct user_regs_struct definition */ 3462306a36Sopenharmony_ci#include <asm/ptrace.h> 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci/* The OR1K relocation types... not all relevant for module loader */ 3762306a36Sopenharmony_ci#define R_OR32_NONE 0 3862306a36Sopenharmony_ci#define R_OR32_32 1 3962306a36Sopenharmony_ci#define R_OR32_16 2 4062306a36Sopenharmony_ci#define R_OR32_8 3 4162306a36Sopenharmony_ci#define R_OR32_CONST 4 4262306a36Sopenharmony_ci#define R_OR32_CONSTH 5 4362306a36Sopenharmony_ci#define R_OR32_JUMPTARG 6 4462306a36Sopenharmony_ci#define R_OR32_VTINHERIT 7 4562306a36Sopenharmony_ci#define R_OR32_VTENTRY 8 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_citypedef unsigned long elf_greg_t; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/* 5062306a36Sopenharmony_ci * Note that NGREG is defined to ELF_NGREG in include/linux/elfcore.h, and is 5162306a36Sopenharmony_ci * thus exposed to user-space. 5262306a36Sopenharmony_ci */ 5362306a36Sopenharmony_ci#define ELF_NGREG (sizeof(struct user_regs_struct) / sizeof(elf_greg_t)) 5462306a36Sopenharmony_citypedef elf_greg_t elf_gregset_t[ELF_NGREG]; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_citypedef struct __or1k_fpu_state elf_fpregset_t; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci/* EM_OPENRISC is defined in linux/elf-em.h */ 5962306a36Sopenharmony_ci#define EM_OR32 0x8472 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci/* 6262306a36Sopenharmony_ci * These are used to set parameters in the core dumps. 6362306a36Sopenharmony_ci */ 6462306a36Sopenharmony_ci#define ELF_ARCH EM_OR32 6562306a36Sopenharmony_ci#define ELF_CLASS ELFCLASS32 6662306a36Sopenharmony_ci#define ELF_DATA ELFDATA2MSB 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ci#endif /* _UAPI__ASM_OPENRISC_ELF_H */ 69