Fix build issues on some environments.
This commit is contained in:
parent
2ffe4a5451
commit
46227e6763
@ -28,7 +28,7 @@ CFLAGS := -Wall -Wextra -MMD -MP -marm $(ARCH) -fno-builtin -std=c11 -O2 -flto -
|
|||||||
LDFLAGS := -Xlinker --defsym="__start__=0x14000000" -specs=3dsx.specs $(ARCH)
|
LDFLAGS := -Xlinker --defsym="__start__=0x14000000" -specs=3dsx.specs $(ARCH)
|
||||||
|
|
||||||
objects = $(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \
|
objects = $(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \
|
||||||
$(call rwildcard, $(dir_source), *.c))
|
$(call rwildcard, $(dir_source), *.s *.c))
|
||||||
|
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: ../$(dir_build)/$(name).cxi
|
all: ../$(dir_build)/$(name).cxi
|
||||||
@ -48,4 +48,9 @@ $(dir_build)/memory.o : CFLAGS += -O3
|
|||||||
$(dir_build)/%.o: $(dir_source)/%.c
|
$(dir_build)/%.o: $(dir_source)/%.c
|
||||||
@mkdir -p "$(@D)"
|
@mkdir -p "$(@D)"
|
||||||
$(COMPILE.c) $(OUTPUT_OPTION) $<
|
$(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
|
$(dir_build)/%.o: $(dir_source)/%.s
|
||||||
|
@mkdir -p "$(@D)"
|
||||||
|
$(COMPILE.c) $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
include $(call rwildcard, $(dir_build), *.d)
|
include $(call rwildcard, $(dir_build), *.d)
|
||||||
|
19
injector/source/CFWInfo.h
Normal file
19
injector/source/CFWInfo.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <3ds.h>
|
||||||
|
|
||||||
|
typedef struct __attribute__((packed))
|
||||||
|
{
|
||||||
|
char magic[4];
|
||||||
|
|
||||||
|
u8 versionMajor;
|
||||||
|
u8 versionMinor;
|
||||||
|
u8 versionBuild;
|
||||||
|
u8 flags; /* bit 0: dev branch; bit 1: is release */
|
||||||
|
|
||||||
|
u32 commitHash;
|
||||||
|
|
||||||
|
u32 config;
|
||||||
|
} CFWInfo;
|
||||||
|
|
||||||
|
int svcGetCFWInfo(CFWInfo *info);
|
9
injector/source/CFWInfo.s
Normal file
9
injector/source/CFWInfo.s
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
.text
|
||||||
|
.arm
|
||||||
|
.align 4
|
||||||
|
|
||||||
|
.global svcGetCFWInfo
|
||||||
|
.type svcGetCFWInfo, %function
|
||||||
|
svcGetCFWInfo:
|
||||||
|
svc 0x2e
|
||||||
|
bx lr
|
@ -2,6 +2,7 @@
|
|||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
#include "patcher.h"
|
#include "patcher.h"
|
||||||
#include "ifile.h"
|
#include "ifile.h"
|
||||||
|
#include "CFWInfo.h"
|
||||||
|
|
||||||
static CFWInfo info;
|
static CFWInfo info;
|
||||||
|
|
||||||
@ -85,11 +86,6 @@ static int fileOpen(IFile *file, FS_ArchiveID archiveId, const char *path, int f
|
|||||||
return IFile_Open(file, archiveId, archivePath, filePath, flags);
|
return IFile_Open(file, archiveId, archivePath, filePath, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __attribute__((naked)) svcGetCFWInfo(CFWInfo __attribute__((unused)) *out)
|
|
||||||
{
|
|
||||||
__asm__ volatile("svc 0x2E; bx lr");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void loadCFWInfo(void)
|
static void loadCFWInfo(void)
|
||||||
{
|
{
|
||||||
static bool infoLoaded = false;
|
static bool infoLoaded = false;
|
||||||
|
@ -8,18 +8,4 @@
|
|||||||
#define MULTICONFIG(a) ((info.config >> (a * 2 + 6)) & 3)
|
#define MULTICONFIG(a) ((info.config >> (a * 2 + 6)) & 3)
|
||||||
#define BOOTCONFIG(a, b) ((info.config >> a) & b)
|
#define BOOTCONFIG(a, b) ((info.config >> a) & b)
|
||||||
|
|
||||||
typedef struct __attribute__((packed))
|
|
||||||
{
|
|
||||||
char magic[4];
|
|
||||||
|
|
||||||
u8 versionMajor;
|
|
||||||
u8 versionMinor;
|
|
||||||
u8 versionBuild;
|
|
||||||
u8 flags; /* bit 0: dev branch; bit 1: is release */
|
|
||||||
|
|
||||||
u32 commitHash;
|
|
||||||
|
|
||||||
u32 config;
|
|
||||||
} CFWInfo;
|
|
||||||
|
|
||||||
void patchCode(u64 progId, u8 *code, u32 size);
|
void patchCode(u64 progId, u8 *code, u32 size);
|
Reference in New Issue
Block a user