Merge pull request #561 from SciresM/master
Add config option to disable exception vectors.
This commit is contained in:
commit
4d99143da0
@ -94,6 +94,7 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
"( ) Show GBA boot screen in patched AGB_FIRM",
|
"( ) Show GBA boot screen in patched AGB_FIRM",
|
||||||
"( ) Patch ARM9 access",
|
"( ) Patch ARM9 access",
|
||||||
"( ) Set developer UNITINFO",
|
"( ) Set developer UNITINFO",
|
||||||
|
"( ) Disable Exception Vectors",
|
||||||
};
|
};
|
||||||
|
|
||||||
const char *optionsDescription[] = { "Select the default EmuNAND.\n\n"
|
const char *optionsDescription[] = { "Select the default EmuNAND.\n\n"
|
||||||
@ -187,6 +188,13 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
"and booting some developer software).\n\n"
|
"and booting some developer software).\n\n"
|
||||||
"Only select this if you know what you\n"
|
"Only select this if you know what you\n"
|
||||||
"are doing!",
|
"are doing!",
|
||||||
|
|
||||||
|
"Disables the fatal error exception\n"
|
||||||
|
"vectors for the ARM11 CPU\n"
|
||||||
|
"Note: Disabling the exception vectors\n"
|
||||||
|
"will disqualify you from submitting\n"
|
||||||
|
"issues or bug reports to the Luma3DS\n"
|
||||||
|
"GitHub repository!"
|
||||||
};
|
};
|
||||||
|
|
||||||
struct multiOption {
|
struct multiOption {
|
||||||
@ -214,6 +222,7 @@ void configMenu(bool oldPinStatus, u32 oldPinMode)
|
|||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
{ .visible = true },
|
{ .visible = true },
|
||||||
|
{ .visible = true },
|
||||||
{ .visible = true }
|
{ .visible = true }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
#define CONFIG_FILE "config.bin"
|
#define CONFIG_FILE "config.bin"
|
||||||
#define CONFIG_VERSIONMAJOR 1
|
#define CONFIG_VERSIONMAJOR 1
|
||||||
#define CONFIG_VERSIONMINOR 12
|
#define CONFIG_VERSIONMINOR 13
|
||||||
|
|
||||||
#define BOOTCFG_NAND BOOTCONFIG(0, 7)
|
#define BOOTCFG_NAND BOOTCONFIG(0, 7)
|
||||||
#define BOOTCFG_FIRM BOOTCONFIG(3, 7)
|
#define BOOTCFG_FIRM BOOTCONFIG(3, 7)
|
||||||
@ -58,7 +58,8 @@ enum singleOptions
|
|||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
PATCHACCESS,
|
PATCHACCESS,
|
||||||
PATCHUNITINFO
|
PATCHUNITINFO,
|
||||||
|
DISABLEVECTORS
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum ConfigurationStatus
|
typedef enum ConfigurationStatus
|
||||||
|
@ -31,7 +31,8 @@ enum singleOptions
|
|||||||
PATCHVERSTRING,
|
PATCHVERSTRING,
|
||||||
SHOWGBABOOT,
|
SHOWGBABOOT,
|
||||||
PATCHACCESS,
|
PATCHACCESS,
|
||||||
PATCHUNITINFO
|
PATCHUNITINFO,
|
||||||
|
DISABLEVECTORS
|
||||||
};
|
};
|
||||||
|
|
||||||
void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 roSize, u32 dataSize, u32 roAddress, u32 dataAddress);
|
void patchCode(u64 progId, u16 progVer, u8 *code, u32 size, u32 textSize, u32 roSize, u32 dataSize, u32 roAddress, u32 dataAddress);
|
||||||
|
36
sysmodules/rosalina/kernel_extension/include/config.h
Normal file
36
sysmodules/rosalina/kernel_extension/include/config.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "types.h"
|
||||||
|
|
||||||
|
#define MAKE_BRANCH(src,dst) (0xEA000000 | ((u32)((((u8 *)(dst) - (u8 *)(src)) >> 2) - 2) & 0xFFFFFF))
|
||||||
|
#define MAKE_BRANCH_LINK(src,dst) (0xEB000000 | ((u32)((((u8 *)(dst) - (u8 *)(src)) >> 2) - 2) & 0xFFFFFF))
|
||||||
|
|
||||||
|
#define CONFIG(a) (((cfwInfo.config >> (a + 17)) & 1) != 0)
|
||||||
|
#define MULTICONFIG(a) ((cfwInfo.config >> (a * 2 + 7)) & 3)
|
||||||
|
#define BOOTCONFIG(a, b) ((cfwInfo.config >> a) & b)
|
||||||
|
|
||||||
|
#define BOOTCFG_NAND BOOTCONFIG(0, 7)
|
||||||
|
#define BOOTCFG_FIRM BOOTCONFIG(3, 7)
|
||||||
|
#define BOOTCFG_NOFORCEFLAG BOOTCONFIG(6, 1)
|
||||||
|
|
||||||
|
enum multiOptions
|
||||||
|
{
|
||||||
|
DEFAULTEMU = 0,
|
||||||
|
BRIGHTNESS,
|
||||||
|
SPLASH,
|
||||||
|
PIN,
|
||||||
|
NEWCPU
|
||||||
|
};
|
||||||
|
|
||||||
|
enum singleOptions
|
||||||
|
{
|
||||||
|
AUTOBOOTEMU = 0,
|
||||||
|
USEEMUFIRM,
|
||||||
|
LOADEXTFIRMSANDMODULES,
|
||||||
|
PATCHGAMES,
|
||||||
|
PATCHVERSTRING,
|
||||||
|
SHOWGBABOOT,
|
||||||
|
PATCHACCESS,
|
||||||
|
PATCHUNITINFO,
|
||||||
|
DISABLEVECTORS
|
||||||
|
};
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include "kernel.h"
|
#include "kernel.h"
|
||||||
|
|
||||||
extern KRecursiveLock *criticalSectionLock;
|
extern KRecursiveLock *criticalSectionLock;
|
||||||
|
@ -35,6 +35,8 @@
|
|||||||
|
|
||||||
bool isExceptionFatal(u32 spsr, u32 *regs, u32 index)
|
bool isExceptionFatal(u32 spsr, u32 *regs, u32 index)
|
||||||
{
|
{
|
||||||
|
if (CONFIG(DISABLEVECTORS)) return false;
|
||||||
|
|
||||||
if((spsr & 0x1f) != 0x10) return true;
|
if((spsr & 0x1f) != 0x10) return true;
|
||||||
|
|
||||||
KThread *thread = currentCoreContext->objectContext.currentThread;
|
KThread *thread = currentCoreContext->objectContext.currentThread;
|
||||||
|
Reference in New Issue
Block a user