1
0
Fork 0
mirror of https://github.com/Atmosphere-NX/Atmosphere.git synced 2024-12-23 02:42:09 +00:00

exo: add config item for rcm patch detection (note TODO)

This commit is contained in:
Michael Scire 2019-04-01 13:10:45 -07:00
parent fd4d6a4e55
commit 4d76f4d79c
4 changed files with 14 additions and 0 deletions

View file

@ -264,6 +264,10 @@ uint32_t configitem_get(bool privileged, ConfigItem item, uint64_t *p_outvalue)
/* UNOFFICIAL: Gets information about the current exosphere git commit hash. */ /* UNOFFICIAL: Gets information about the current exosphere git commit hash. */
*p_outvalue = ATMOSPHERE_RELEASE_VERSION_HASH; *p_outvalue = ATMOSPHERE_RELEASE_VERSION_HASH;
break; break;
case CONFIGITEM_HAS_RCM_BUG_PATCH:
/* UNOFFICIAL: Gets whether this unit has the RCM bug patched. */
*p_outvalue = (int)(fuse_has_rcm_bug_patch());;
break;
default: default:
result = 2; result = 2;
break; break;

View file

@ -44,6 +44,7 @@ typedef enum {
CONFIGITEM_NEEDS_REBOOT = 65001, CONFIGITEM_NEEDS_REBOOT = 65001,
CONFIGITEM_NEEDS_SHUTDOWN = 65002, CONFIGITEM_NEEDS_SHUTDOWN = 65002,
CONFIGITEM_EXOSPHERE_VERHASH = 65003, CONFIGITEM_EXOSPHERE_VERHASH = 65003,
CONFIGITEM_HAS_RCM_BUG_PATCH = 65004,
} ConfigItem; } ConfigItem;
#define REBOOT_KIND_NO_REBOOT 0 #define REBOOT_KIND_NO_REBOOT 0

View file

@ -23,6 +23,7 @@
#include "exocfg.h" #include "exocfg.h"
#include "masterkey.h" #include "masterkey.h"
/* Prototypes for internal commands. */ /* Prototypes for internal commands. */
void fuse_make_regs_visible(void); void fuse_make_regs_visible(void);
@ -257,3 +258,9 @@ void fuse_get_hardware_info(void *dst) {
memcpy(dst, hw_info, 0x10); memcpy(dst, hw_info, 0x10);
} }
bool fuse_has_rcm_bug_patch(void) {
/* Patched units have this bit set in reserved_sw, according to reports. */
/* TODO: Is there an ipatch we should check? This should be researched. */
return (FUSE_CHIP_REGS->FUSE_RESERVED_SW & 0x80) != 0;
}

View file

@ -215,4 +215,6 @@ uint32_t fuse_get_hardware_type(void);
uint32_t fuse_get_retail_type(void); uint32_t fuse_get_retail_type(void);
void fuse_get_hardware_info(void *dst); void fuse_get_hardware_info(void *dst);
bool fuse_has_rcm_bug_patch(void);
#endif #endif