1*b3372aa6SHuibin Hong /* 2*b3372aa6SHuibin Hong * (C) Copyright 2020 Rockchip Electronics Co., Ltd 3*b3372aa6SHuibin Hong * 4*b3372aa6SHuibin Hong * SPDX-License-Identifier: GPL-2.0+ 5*b3372aa6SHuibin Hong */ 6*b3372aa6SHuibin Hong 7*b3372aa6SHuibin Hong #ifndef RK_MINIDUMP_H 8*b3372aa6SHuibin Hong #define RK_MINIDUMP_H 9*b3372aa6SHuibin Hong 10*b3372aa6SHuibin Hong #include <elf.h> 11*b3372aa6SHuibin Hong 12*b3372aa6SHuibin Hong #define MD_MAX_NAME_LENGTH 16 13*b3372aa6SHuibin Hong /* md_region - Minidump table entry 14*b3372aa6SHuibin Hong * @name: Entry name, Minidump will dump binary with this name. 15*b3372aa6SHuibin Hong * @id: Entry ID, used only for SDI dumps. 16*b3372aa6SHuibin Hong * @virt_addr: Address of the entry. 17*b3372aa6SHuibin Hong * @phys_addr: Physical address of the entry to dump. 18*b3372aa6SHuibin Hong * @size: Number of byte to dump from @address location 19*b3372aa6SHuibin Hong * it should be 4 byte aligned. 20*b3372aa6SHuibin Hong */ 21*b3372aa6SHuibin Hong struct md_region { 22*b3372aa6SHuibin Hong char name[MD_MAX_NAME_LENGTH]; 23*b3372aa6SHuibin Hong u32 id; 24*b3372aa6SHuibin Hong u64 virt_addr; 25*b3372aa6SHuibin Hong u64 phys_addr; 26*b3372aa6SHuibin Hong u64 size; 27*b3372aa6SHuibin Hong }; 28*b3372aa6SHuibin Hong 29*b3372aa6SHuibin Hong void rk_minidump_init(void); 30*b3372aa6SHuibin Hong 31*b3372aa6SHuibin Hong #ifdef CONFIG_ARM64 32*b3372aa6SHuibin Hong void rk_minidump_get_el64(void **ram_image_addr, Elf64_Xword *ram_image_size); 33*b3372aa6SHuibin Hong #else 34*b3372aa6SHuibin Hong void rk_minidump_get_el32(void **ram_image_addr, Elf32_Word *ram_image_size); 35*b3372aa6SHuibin Hong #endif 36*b3372aa6SHuibin Hong 37*b3372aa6SHuibin Hong struct md_region *md_get_region(char *name); 38*b3372aa6SHuibin Hong u32 md_no_fault_handler(struct pt_regs *pt_regs, unsigned int esr); 39*b3372aa6SHuibin Hong #endif 40