mirror of
https://github.com/CTCaer/hekate
synced 2024-11-16 08:59:26 +00:00
6b8887b5d8
Currently bpmp loses access to the relevant registers when secmon or exosphere is launched. This change provides support for all firmwares and properly sanitizes the display.
63 lines
1.4 KiB
C
63 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 2018 naehrwert
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms and conditions of the GNU General Public License,
|
|
* version 2, as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
* more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _PKG1_H_
|
|
#define _PKG1_H_
|
|
|
|
#include "../utils/types.h"
|
|
|
|
typedef struct _patch_t
|
|
{
|
|
u32 off;
|
|
u32 val;
|
|
} patch_t;
|
|
|
|
#define PATCHSET_DEF(name, ...) \
|
|
patch_t name[] = { \
|
|
__VA_ARGS__, \
|
|
{ 0xFFFFFFFF, 0xFFFFFFFF } \
|
|
}
|
|
|
|
typedef struct _pkg1_id_t
|
|
{
|
|
const char *id;
|
|
u32 kb;
|
|
u32 tsec_off;
|
|
u32 pkg11_off;
|
|
u32 sec_map[3];
|
|
u32 secmon_base;
|
|
u32 warmboot_base;
|
|
bool set_warmboot;
|
|
patch_t *secmon_patchset;
|
|
} pkg1_id_t;
|
|
|
|
typedef struct _pk11_hdr_t
|
|
{
|
|
u32 magic;
|
|
u32 wb_size;
|
|
u32 wb_off;
|
|
u32 pad;
|
|
u32 ldr_size;
|
|
u32 ldr_off;
|
|
u32 sm_size;
|
|
u32 sm_off;
|
|
} pk11_hdr_t;
|
|
|
|
const pkg1_id_t *pkg1_identify(u8 *pkg1);
|
|
void pkg1_decrypt(const pkg1_id_t *id, u8 *pkg1);
|
|
void pkg1_unpack(void *warmboot_dst, void *secmon_dst, void *ldr_dst, const pkg1_id_t *id, u8 *pkg1);
|
|
|
|
#endif
|