162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci
362306a36Sopenharmony_ci/*
462306a36Sopenharmony_ci * Copyright (c) 2021, Microsoft Corporation.
562306a36Sopenharmony_ci * Pasha Tatashin <pasha.tatashin@soleen.com>
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#ifndef _ASM_TRANS_TABLE_H
962306a36Sopenharmony_ci#define _ASM_TRANS_TABLE_H
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#include <linux/bits.h>
1262306a36Sopenharmony_ci#include <linux/types.h>
1362306a36Sopenharmony_ci#include <asm/pgtable-types.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci/*
1662306a36Sopenharmony_ci * trans_alloc_page
1762306a36Sopenharmony_ci *	- Allocator that should return exactly one zeroed page, if this
1862306a36Sopenharmony_ci *	  allocator fails, trans_pgd_create_copy() and trans_pgd_idmap_page()
1962306a36Sopenharmony_ci *	  return -ENOMEM error.
2062306a36Sopenharmony_ci *
2162306a36Sopenharmony_ci * trans_alloc_arg
2262306a36Sopenharmony_ci *	- Passed to trans_alloc_page as an argument
2362306a36Sopenharmony_ci */
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_cistruct trans_pgd_info {
2662306a36Sopenharmony_ci	void * (*trans_alloc_page)(void *arg);
2762306a36Sopenharmony_ci	void *trans_alloc_arg;
2862306a36Sopenharmony_ci};
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciint trans_pgd_create_copy(struct trans_pgd_info *info, pgd_t **trans_pgd,
3162306a36Sopenharmony_ci			  unsigned long start, unsigned long end);
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciint trans_pgd_idmap_page(struct trans_pgd_info *info, phys_addr_t *trans_ttbr0,
3462306a36Sopenharmony_ci			 unsigned long *t0sz, void *page);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ciint trans_pgd_copy_el2_vectors(struct trans_pgd_info *info,
3762306a36Sopenharmony_ci			       phys_addr_t *el2_vectors);
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciextern char trans_pgd_stub_vectors[];
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#endif /* _ASM_TRANS_TABLE_H */
42