162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/* Copyright (C) 2014 ARM Ltd. */
362306a36Sopenharmony_ci#ifndef __ASM_PTDUMP_H
462306a36Sopenharmony_ci#define __ASM_PTDUMP_H
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifdef CONFIG_ARM_PTDUMP_CORE
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <linux/mm_types.h>
962306a36Sopenharmony_ci#include <linux/seq_file.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct addr_marker {
1262306a36Sopenharmony_ci	unsigned long start_address;
1362306a36Sopenharmony_ci	char *name;
1462306a36Sopenharmony_ci};
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct ptdump_info {
1762306a36Sopenharmony_ci	struct mm_struct		*mm;
1862306a36Sopenharmony_ci	const struct addr_marker	*markers;
1962306a36Sopenharmony_ci	unsigned long			base_addr;
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_civoid ptdump_walk_pgd(struct seq_file *s, struct ptdump_info *info);
2362306a36Sopenharmony_ci#ifdef CONFIG_ARM_PTDUMP_DEBUGFS
2462306a36Sopenharmony_ci#define EFI_RUNTIME_MAP_END	SZ_1G
2562306a36Sopenharmony_civoid ptdump_debugfs_register(struct ptdump_info *info, const char *name);
2662306a36Sopenharmony_ci#else
2762306a36Sopenharmony_cistatic inline void ptdump_debugfs_register(struct ptdump_info *info,
2862306a36Sopenharmony_ci					   const char *name) { }
2962306a36Sopenharmony_ci#endif /* CONFIG_ARM_PTDUMP_DEBUGFS */
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_civoid ptdump_check_wx(void);
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci#endif /* CONFIG_ARM_PTDUMP_CORE */
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci#ifdef CONFIG_DEBUG_WX
3662306a36Sopenharmony_ci#define debug_checkwx() ptdump_check_wx()
3762306a36Sopenharmony_ci#else
3862306a36Sopenharmony_ci#define debug_checkwx() do { } while (0)
3962306a36Sopenharmony_ci#endif
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#endif /* __ASM_PTDUMP_H */
42