mirror of
https://github.com/CTCaer/hekate
synced 2024-09-07 00:29:00 +00:00
More unfattening
This commit is contained in:
parent
6d556bf213
commit
19e9292128
28
ipl/ff.c
28
ipl/ff.c
|
@ -3305,15 +3305,11 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
QWORD maxlba;
|
QWORD maxlba;
|
||||||
|
|
||||||
for (i = BPB_ZeroedEx; i < BPB_ZeroedEx + 53 && fs->win[i] == 0; i++) ; /* Check zero filler */
|
for (i = BPB_ZeroedEx; i < BPB_ZeroedEx + 53 && fs->win[i] == 0; i++) ; /* Check zero filler */
|
||||||
if (i < BPB_ZeroedEx + 53) {
|
if (i < BPB_ZeroedEx + 53)
|
||||||
EFSPRINTF("exFAT - Zero filler check failed!");
|
|
||||||
return FR_NO_FILESYSTEM;
|
return FR_NO_FILESYSTEM;
|
||||||
}
|
|
||||||
|
|
||||||
if (ld_word(fs->win + BPB_FSVerEx) != 0x100) {
|
if (ld_word(fs->win + BPB_FSVerEx) != 0x100)
|
||||||
EFSPRINTF("exFAT - Version check failed!");
|
|
||||||
return FR_NO_FILESYSTEM; /* Check exFAT version (must be version 1.0) */
|
return FR_NO_FILESYSTEM; /* Check exFAT version (must be version 1.0) */
|
||||||
}
|
|
||||||
|
|
||||||
if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) { /* (BPB_BytsPerSecEx must be equal to the physical sector size) */
|
if (1 << fs->win[BPB_BytsPerSecEx] != SS(fs)) { /* (BPB_BytsPerSecEx must be equal to the physical sector size) */
|
||||||
EFSPRINTF("exFAT - Bytes per sector does not match physical sector size!");
|
EFSPRINTF("exFAT - Bytes per sector does not match physical sector size!");
|
||||||
|
@ -3321,10 +3317,8 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
}
|
}
|
||||||
|
|
||||||
maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect; /* Last LBA + 1 of the volume */
|
maxlba = ld_qword(fs->win + BPB_TotSecEx) + bsect; /* Last LBA + 1 of the volume */
|
||||||
if (maxlba >= 0x100000000) {
|
if (maxlba >= 0x100000000)
|
||||||
EFSPRINTF("exFAT - Cannot handle volume LBA with 32-bit LBA!");
|
|
||||||
return FR_NO_FILESYSTEM; /* (It cannot be handled in 32-bit LBA) */
|
return FR_NO_FILESYSTEM; /* (It cannot be handled in 32-bit LBA) */
|
||||||
}
|
|
||||||
|
|
||||||
fs->fsize = ld_dword(fs->win + BPB_FatSzEx); /* Number of sectors per FAT */
|
fs->fsize = ld_dword(fs->win + BPB_FatSzEx); /* Number of sectors per FAT */
|
||||||
|
|
||||||
|
@ -3351,10 +3345,8 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
fs->volbase = bsect;
|
fs->volbase = bsect;
|
||||||
fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx);
|
fs->database = bsect + ld_dword(fs->win + BPB_DataOfsEx);
|
||||||
fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx);
|
fs->fatbase = bsect + ld_dword(fs->win + BPB_FatOfsEx);
|
||||||
if (maxlba < (QWORD)fs->database + nclst * fs->csize) {
|
if (maxlba < (QWORD)fs->database + nclst * fs->csize)
|
||||||
EFSPRINTF("exFAT - Volume size is lower than required!");
|
|
||||||
return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size required) */
|
return FR_NO_FILESYSTEM; /* (Volume size must not be smaller than the size required) */
|
||||||
}
|
|
||||||
fs->dirbase = ld_dword(fs->win + BPB_RootClusEx);
|
fs->dirbase = ld_dword(fs->win + BPB_RootClusEx);
|
||||||
|
|
||||||
/* Check if bitmap location is in assumption (at the first cluster) */
|
/* Check if bitmap location is in assumption (at the first cluster) */
|
||||||
|
@ -3393,10 +3385,8 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
fasize *= fs->n_fats; /* Number of sectors for FAT area */
|
fasize *= fs->n_fats; /* Number of sectors for FAT area */
|
||||||
|
|
||||||
fs->csize = fs->win[BPB_SecPerClus]; /* Cluster size */
|
fs->csize = fs->win[BPB_SecPerClus]; /* Cluster size */
|
||||||
if (fs->csize == 0 || (fs->csize & (fs->csize - 1))) {
|
if (fs->csize == 0 || (fs->csize & (fs->csize - 1)))
|
||||||
EFSPRINTF("FAT - Cluster size is not a power of 2!");
|
|
||||||
return FR_NO_FILESYSTEM; /* (Must be power of 2) */
|
return FR_NO_FILESYSTEM; /* (Must be power of 2) */
|
||||||
}
|
|
||||||
|
|
||||||
fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt); /* Number of root directory entries */
|
fs->n_rootdir = ld_word(fs->win + BPB_RootEntCnt); /* Number of root directory entries */
|
||||||
if (fs->n_rootdir % (SS(fs) / SZDIRE)) {
|
if (fs->n_rootdir % (SS(fs) / SZDIRE)) {
|
||||||
|
@ -3408,10 +3398,8 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32);
|
if (tsect == 0) tsect = ld_dword(fs->win + BPB_TotSec32);
|
||||||
|
|
||||||
nrsv = ld_word(fs->win + BPB_RsvdSecCnt); /* Number of reserved sectors */
|
nrsv = ld_word(fs->win + BPB_RsvdSecCnt); /* Number of reserved sectors */
|
||||||
if (nrsv == 0) {
|
if (nrsv == 0)
|
||||||
EFSPRINTF("FAT - Zero reserved sectors!");
|
|
||||||
return FR_NO_FILESYSTEM; /* (Must not be 0) */
|
return FR_NO_FILESYSTEM; /* (Must not be 0) */
|
||||||
}
|
|
||||||
|
|
||||||
/* Determine the FAT sub type */
|
/* Determine the FAT sub type */
|
||||||
sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE); /* RSV + FAT + DIR */
|
sysect = nrsv + fasize + fs->n_rootdir / (SS(fs) / SZDIRE); /* RSV + FAT + DIR */
|
||||||
|
@ -3439,10 +3427,8 @@ static FRESULT find_volume ( /* FR_OK(0): successful, !=0: an error occurred */
|
||||||
fs->fatbase = bsect + nrsv; /* FAT start sector */
|
fs->fatbase = bsect + nrsv; /* FAT start sector */
|
||||||
fs->database = bsect + sysect; /* Data start sector */
|
fs->database = bsect + sysect; /* Data start sector */
|
||||||
if (fmt == FS_FAT32) {
|
if (fmt == FS_FAT32) {
|
||||||
if (ld_word(fs->win + BPB_FSVer32) != 0) {
|
if (ld_word(fs->win + BPB_FSVer32) != 0)
|
||||||
EFSPRINTF("FAT32 - Not a 0.0 revision!");
|
|
||||||
return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0) */
|
return FR_NO_FILESYSTEM; /* (Must be FAT32 revision 0.0) */
|
||||||
}
|
|
||||||
if (fs->n_rootdir != 0) {
|
if (fs->n_rootdir != 0) {
|
||||||
EFSPRINTF("FAT32 - Root entry sector is not 0!");
|
EFSPRINTF("FAT32 - Root entry sector is not 0!");
|
||||||
return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */
|
return FR_NO_FILESYSTEM; /* (BPB_RootEntCnt must be 0) */
|
||||||
|
|
|
@ -1551,15 +1551,12 @@ void dump_package1()
|
||||||
|
|
||||||
// Display info.
|
// Display info.
|
||||||
gfx_printf(&gfx_con, "%kNX Bootloader size: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->ldr_size);
|
gfx_printf(&gfx_con, "%kNX Bootloader size: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->ldr_size);
|
||||||
gfx_printf(&gfx_con, "%kNX Bootloader ofst: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->ldr_off);
|
|
||||||
|
|
||||||
gfx_printf(&gfx_con, "%kSecure monitor addr: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, pkg1_id->secmon_base);
|
gfx_printf(&gfx_con, "%kSecure monitor addr: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, pkg1_id->secmon_base);
|
||||||
gfx_printf(&gfx_con, "%kSecure monitor size: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->sm_size);
|
gfx_printf(&gfx_con, "%kSecure monitor size: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->sm_size);
|
||||||
gfx_printf(&gfx_con, "%kSecure monitor ofst: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->sm_off);
|
|
||||||
|
|
||||||
gfx_printf(&gfx_con, "%kWarmboot addr: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, pkg1_id->warmboot_base);
|
gfx_printf(&gfx_con, "%kWarmboot addr: %k0x%05X\n", 0xFFC7EA46, 0xFFCCCCCC, pkg1_id->warmboot_base);
|
||||||
gfx_printf(&gfx_con, "%kWarmboot size: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->wb_size);
|
gfx_printf(&gfx_con, "%kWarmboot size: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->wb_size);
|
||||||
gfx_printf(&gfx_con, "%kWarmboot ofst: %k0x%05X\n\n", 0xFFC7EA46, 0xFFCCCCCC, hdr->wb_off);
|
|
||||||
|
|
||||||
// Dump package1.
|
// Dump package1.
|
||||||
f_mkdir("Backup");
|
f_mkdir("Backup");
|
||||||
|
@ -1913,7 +1910,6 @@ int fix_attributes(char *path, u32 *total, u32 is_root, u32 check_first_run)
|
||||||
u32 dirLength = 0;
|
u32 dirLength = 0;
|
||||||
static FILINFO fno;
|
static FILINFO fno;
|
||||||
|
|
||||||
// Should we set the bit of the entry directory?
|
|
||||||
if (check_first_run)
|
if (check_first_run)
|
||||||
{
|
{
|
||||||
// Read file attributes.
|
// Read file attributes.
|
||||||
|
|
Loading…
Reference in a new issue