From 8fccb570e5ba5cff6d4824c25003c2f45845363e Mon Sep 17 00:00:00 2001 From: fincs Date: Thu, 21 Aug 2014 22:59:42 +0200 Subject: [PATCH 1/2] Homogenize indentation (use tabs) --- libctru/include/3ds/os.h | 3 +- libctru/include/3ds/svc.h | 24 ++++--- libctru/include/netdb.h | 10 +-- libctru/source/os.c | 74 ++++++++++----------- libctru/source/services/hid.c | 120 +++++++++++++++++----------------- libctru/source/srv.c | 106 +++++++++++++++--------------- 6 files changed, 167 insertions(+), 170 deletions(-) diff --git a/libctru/include/3ds/os.h b/libctru/include/3ds/os.h index 22c8deb..0ae7eeb 100644 --- a/libctru/include/3ds/os.h +++ b/libctru/include/3ds/os.h @@ -1,9 +1,8 @@ #ifndef OS_H #define OS_H - #define SYSTEM_VERSION(major, minor, revision) \ - (((major)<<24)|((minor)<<16)|((revision)<<8)) + (((major)<<24)|((minor)<<16)|((revision)<<8)) u32 osConvertVirtToPhys(u32 vaddr); const char* osStrError(u32 error); diff --git a/libctru/include/3ds/svc.h b/libctru/include/3ds/svc.h index 535229a..402194d 100644 --- a/libctru/include/3ds/svc.h +++ b/libctru/include/3ds/svc.h @@ -5,23 +5,22 @@ #ifndef SVC_H #define SVC_H - typedef enum { - MEMOP_FREE =1, // Free heap - MEMOP_ALLOC=3, // Allocate heap - MEMOP_MAP =4, // Mirror mapping - MEMOP_UNMAP=5, // Mirror unmapping - MEMOP_PROT =6, // Change protection + MEMOP_FREE =1, // Free heap + MEMOP_ALLOC=3, // Allocate heap + MEMOP_MAP =4, // Mirror mapping + MEMOP_UNMAP=5, // Mirror unmapping + MEMOP_PROT =6, // Change protection - MEMOP_FREE_LINEAR =0x10001, // Free linear heap - MEMOP_ALLOC_LINEAR=0x10003 // Allocate linear heap + MEMOP_FREE_LINEAR =0x10001, // Free linear heap + MEMOP_ALLOC_LINEAR=0x10003 // Allocate linear heap } MemOp; typedef enum { - MEMPERM_READ =1, - MEMPERM_WRITE =2, - MEMPERM_EXECUTE=4, - MEMPERM_MAX =0xFFFFFFFF //force 4-byte + MEMPERM_READ =1, + MEMPERM_WRITE =2, + MEMPERM_EXECUTE=4, + MEMPERM_MAX =0xFFFFFFFF //force 4-byte } MemPerm; u32* getThreadCommandBuffer(void); @@ -50,5 +49,4 @@ s32 svcConnectToPort(volatile Handle* out, const char* portName); s32 svcSendSyncRequest(Handle session); s32 svcGetProcessId(u32 *out, Handle handle); - #endif diff --git a/libctru/include/netdb.h b/libctru/include/netdb.h index e24c8ca..8aa5d91 100644 --- a/libctru/include/netdb.h +++ b/libctru/include/netdb.h @@ -2,11 +2,11 @@ #define NETDB_H struct hostent { - char * h_name; - char ** h_aliases; - int h_addrtype; - int h_length; - char ** h_addr_list; + char * h_name; + char ** h_aliases; + int h_addrtype; + int h_length; + char ** h_addr_list; }; diff --git a/libctru/source/os.c b/libctru/source/os.c index 62dfdb4..b8d828f 100644 --- a/libctru/source/os.c +++ b/libctru/source/os.c @@ -4,50 +4,50 @@ u32 osConvertVirtToPhys(u32 vaddr) { - if(vaddr >= 0x14000000 && vaddr < 0x1c000000) - return vaddr + 0x0c000000; // LINEAR heap - if(vaddr >= 0x1F000000 && vaddr < 0x1F600000) - return vaddr - 0x07000000; // VRAM - if(vaddr >= 0x1FF00000 && vaddr < 0x1FF80000) - return vaddr + 0x00000000; // DSP memory - if(vaddr >= 0x30000000 && vaddr < 0x40000000) - return vaddr - 0x10000000; // Only available under FIRM v8+ for certain processes. - return 0; + if(vaddr >= 0x14000000 && vaddr < 0x1c000000) + return vaddr + 0x0c000000; // LINEAR heap + if(vaddr >= 0x1F000000 && vaddr < 0x1F600000) + return vaddr - 0x07000000; // VRAM + if(vaddr >= 0x1FF00000 && vaddr < 0x1FF80000) + return vaddr + 0x00000000; // DSP memory + if(vaddr >= 0x30000000 && vaddr < 0x40000000) + return vaddr - 0x10000000; // Only available under FIRM v8+ for certain processes. + return 0; } u32 osGetFirmVersion() { - return (*(u32*)0x1FF80000) & ~0xFF; + return (*(u32*)0x1FF80000) & ~0xFF; } u32 osGetKernelVersion() { - return (*(u32*)0x1FF80060) & ~0xFF; + return (*(u32*)0x1FF80060) & ~0xFF; } const char* osStrError(u32 error) { - switch((error>>26) & 0x3F) { - case 0: - return "Success."; - case 1: - return "Nothing happened."; - case 2: - return "Would block."; - case 3: - return "Not enough resources."; - case 4: - return "Not found."; - case 5: - return "Invalid state."; - case 6: - return "Unsupported."; - case 7: - return "Invalid argument."; - case 8: - return "Wrong argument."; - case 9: - return "Interrupted."; - case 10: - return "Internal error."; - default: - return "Unknown."; - } + switch((error>>26) & 0x3F) { + case 0: + return "Success."; + case 1: + return "Nothing happened."; + case 2: + return "Would block."; + case 3: + return "Not enough resources."; + case 4: + return "Not found."; + case 5: + return "Invalid state."; + case 6: + return "Unsupported."; + case 7: + return "Invalid argument."; + case 8: + return "Wrong argument."; + case 9: + return "Interrupted."; + case 10: + return "Internal error."; + default: + return "Unknown."; + } } diff --git a/libctru/source/services/hid.c b/libctru/source/services/hid.c index 6173041..b85ce9a 100644 --- a/libctru/source/services/hid.c +++ b/libctru/source/services/hid.c @@ -20,133 +20,133 @@ static circlePosition cPos; Result hidInit(u32* sharedMem) { - if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT; - Result ret=0; + if(!sharedMem)sharedMem=(u32*)HID_SHAREDMEM_DEFAULT; + Result ret=0; - // Request service. - if((ret=srvGetServiceHandle(&hidHandle, "hid:USER")))return ret; + // Request service. + if((ret=srvGetServiceHandle(&hidHandle, "hid:USER")))return ret; - // Get sharedmem handle. - if((ret=HIDUSER_GetSharedMem(&hidMemHandle))) goto cleanup1; + // Get sharedmem handle. + if((ret=HIDUSER_GetSharedMem(&hidMemHandle))) goto cleanup1; - // Map HID shared memory at addr "sharedMem". - hidSharedMem=sharedMem; - if((ret=svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2; + // Map HID shared memory at addr "sharedMem". + hidSharedMem=sharedMem; + if((ret=svcMapMemoryBlock(hidMemHandle, (u32)hidSharedMem, MEMPERM_READ, 0x10000000)))goto cleanup2; - // Reset internal state. - kOld = kHeld = kDown = kUp = 0; - return 0; + // Reset internal state. + kOld = kHeld = kDown = kUp = 0; + return 0; cleanup2: - svcCloseHandle(hidMemHandle); + svcCloseHandle(hidMemHandle); cleanup1: - svcCloseHandle(hidHandle); - return ret; + svcCloseHandle(hidHandle); + return ret; } void hidExit() { - // Unmap HID sharedmem and close handles. - svcUnmapMemoryBlock(hidMemHandle, (u32)hidSharedMem); - svcCloseHandle(hidMemHandle); - svcCloseHandle(hidHandle); + // Unmap HID sharedmem and close handles. + svcUnmapMemoryBlock(hidMemHandle, (u32)hidSharedMem); + svcCloseHandle(hidMemHandle); + svcCloseHandle(hidHandle); } void hidScanInput() { - kOld = kHeld; + kOld = kHeld; - int padId = hidSharedMem[4]; - kHeld = hidSharedMem[10 + padId*4]; - cPos = *(circlePosition*)&hidSharedMem[10 + padId*4 + 3]; + int padId = hidSharedMem[4]; + kHeld = hidSharedMem[10 + padId*4]; + cPos = *(circlePosition*)&hidSharedMem[10 + padId*4 + 3]; - int touchId = hidSharedMem[42 + 4]; - tPos = *(touchPosition*)&hidSharedMem[42 + 8 + touchId*2]; - if (hidSharedMem[42 + 8 + touchId*2 + 1]) - kHeld |= KEY_TOUCH; + int touchId = hidSharedMem[42 + 4]; + tPos = *(touchPosition*)&hidSharedMem[42 + 8 + touchId*2]; + if (hidSharedMem[42 + 8 + touchId*2 + 1]) + kHeld |= KEY_TOUCH; - kDown = (~kOld) & kHeld; - kUp = kOld & (~kHeld); + kDown = (~kOld) & kHeld; + kUp = kOld & (~kHeld); } u32 hidKeysHeld() { - return kHeld; + return kHeld; } u32 hidKeysDown() { - return kDown; + return kDown; } u32 hidKeysUp() { - return kUp; + return kUp; } void hidTouchRead(touchPosition* pos) { - if (pos) *pos = tPos; + if (pos) *pos = tPos; } void hidCircleRead(circlePosition* pos) { - if (pos) *pos = cPos; + if (pos) *pos = cPos; } Result HIDUSER_GetSharedMem(Handle* outMemHandle) { - u32* cmdbuf=getThreadCommandBuffer(); - cmdbuf[0]=0xa0000; //request header code + u32* cmdbuf=getThreadCommandBuffer(); + cmdbuf[0]=0xa0000; //request header code - Result ret=0; - if((ret=svcSendSyncRequest(hidHandle)))return ret; + Result ret=0; + if((ret=svcSendSyncRequest(hidHandle)))return ret; - if(outMemHandle)*outMemHandle=cmdbuf[3]; + if(outMemHandle)*outMemHandle=cmdbuf[3]; - return cmdbuf[1]; + return cmdbuf[1]; } Result HIDUSER_EnableAccelerometer() { - u32* cmdbuf=getThreadCommandBuffer(); - cmdbuf[0]=0x110000; //request header code + u32* cmdbuf=getThreadCommandBuffer(); + cmdbuf[0]=0x110000; //request header code - Result ret=0; - if((ret=svcSendSyncRequest(hidHandle)))return ret; + Result ret=0; + if((ret=svcSendSyncRequest(hidHandle)))return ret; - return cmdbuf[1]; + return cmdbuf[1]; } Result HIDUSER_DisableAccelerometer() { - u32* cmdbuf=getThreadCommandBuffer(); - cmdbuf[0]=0x120000; //request header code + u32* cmdbuf=getThreadCommandBuffer(); + cmdbuf[0]=0x120000; //request header code - Result ret=0; - if((ret=svcSendSyncRequest(hidHandle)))return ret; + Result ret=0; + if((ret=svcSendSyncRequest(hidHandle)))return ret; - return cmdbuf[1]; + return cmdbuf[1]; } Result HIDUSER_EnableGyroscope() { - u32* cmdbuf=getThreadCommandBuffer(); - cmdbuf[0]=0x130000; //request header code + u32* cmdbuf=getThreadCommandBuffer(); + cmdbuf[0]=0x130000; //request header code - Result ret=0; - if((ret=svcSendSyncRequest(hidHandle)))return ret; + Result ret=0; + if((ret=svcSendSyncRequest(hidHandle)))return ret; - return cmdbuf[1]; + return cmdbuf[1]; } Result HIDUSER_DisableGyroscope() { - u32* cmdbuf=getThreadCommandBuffer(); - cmdbuf[0]=0x140000; //request header code + u32* cmdbuf=getThreadCommandBuffer(); + cmdbuf[0]=0x140000; //request header code - Result ret=0; - if((ret=svcSendSyncRequest(hidHandle)))return ret; + Result ret=0; + if((ret=svcSendSyncRequest(hidHandle)))return ret; - return cmdbuf[1]; + return cmdbuf[1]; } diff --git a/libctru/source/srv.c b/libctru/source/srv.c index f074e79..0f957c7 100644 --- a/libctru/source/srv.c +++ b/libctru/source/srv.c @@ -20,12 +20,12 @@ */ typedef struct { - u32 num; + u32 num; - struct { - char name[8]; - Handle handle; - } services[]; + struct { + char name[8]; + Handle handle; + } services[]; } service_list_t; extern service_list_t* __service_ptr; @@ -35,86 +35,86 @@ static Handle g_srv_handle = 0; static int __name_cmp(const char* a, const char* b) { - u32 i; + u32 i; - for(i=0; i<8; i++) { - if(a[i] != b[i]) - return 1; - if(a[i] == '\0') - return 0; - } + for(i=0; i<8; i++) { + if(a[i] != b[i]) + return 1; + if(a[i] == '\0') + return 0; + } - return 0; + return 0; } static Handle __get_handle_from_list(char* name) { - if((u32)__service_ptr == 0) - return 0; + if((u32)__service_ptr == 0) + return 0; - u32 i, num = __service_ptr->num; + u32 i, num = __service_ptr->num; - for(i=0; iservices[i].name, name) == 0) - return __service_ptr->services[i].handle; - } + for(i=0; iservices[i].name, name) == 0) + return __service_ptr->services[i].handle; + } - return 0; + return 0; } Result srvInit() { - Result rc = 0; + Result rc = 0; - if((rc = svcConnectToPort(&g_srv_handle, "srv:")))return rc; + if((rc = svcConnectToPort(&g_srv_handle, "srv:")))return rc; - if((rc = srvRegisterClient())) { - svcCloseHandle(g_srv_handle); - g_srv_handle = 0; - } + if((rc = srvRegisterClient())) { + svcCloseHandle(g_srv_handle); + g_srv_handle = 0; + } - return rc; + return rc; } Result srvExit() { - if(g_srv_handle != 0)svcCloseHandle(g_srv_handle); + if(g_srv_handle != 0)svcCloseHandle(g_srv_handle); - g_srv_handle = 0; - return 0; + g_srv_handle = 0; + return 0; } Result srvRegisterClient() { - u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = 0x10002; - cmdbuf[1] = 0x20; + u32* cmdbuf = getThreadCommandBuffer(); + cmdbuf[0] = 0x10002; + cmdbuf[1] = 0x20; - Result rc; - if((rc = svcSendSyncRequest(g_srv_handle)))return rc; + Result rc; + if((rc = svcSendSyncRequest(g_srv_handle)))return rc; - return cmdbuf[1]; + return cmdbuf[1]; } Result srvGetServiceHandle(Handle* out, char* name) { - /* Look in service-list given to us by loader. If we find find a match, - we return it. */ - Handle h = __get_handle_from_list(name); + /* Look in service-list given to us by loader. If we find find a match, + we return it. */ + Handle h = __get_handle_from_list(name); - if(h != 0) { - return svcDuplicateHandle(out, h); - } + if(h != 0) { + return svcDuplicateHandle(out, h); + } - /* Normal request to service manager. */ - u32* cmdbuf = getThreadCommandBuffer(); - cmdbuf[0] = 0x50100; - strcpy((char*) &cmdbuf[1], name); - cmdbuf[3] = strlen(name); - cmdbuf[4] = 0x0; + /* Normal request to service manager. */ + u32* cmdbuf = getThreadCommandBuffer(); + cmdbuf[0] = 0x50100; + strcpy((char*) &cmdbuf[1], name); + cmdbuf[3] = strlen(name); + cmdbuf[4] = 0x0; - Result rc; - if((rc = svcSendSyncRequest(g_srv_handle)))return rc; + Result rc; + if((rc = svcSendSyncRequest(g_srv_handle)))return rc; - *out = cmdbuf[3]; - return cmdbuf[1]; + *out = cmdbuf[3]; + return cmdbuf[1]; } From 94f59bb0760f83029f6e564c394d4aefef957b18 Mon Sep 17 00:00:00 2001 From: fincs Date: Thu, 21 Aug 2014 22:59:59 +0200 Subject: [PATCH 2/2] Update Makefile flags --- libctru/Makefile | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/libctru/Makefile b/libctru/Makefile index 5dd829b..0850eef 100644 --- a/libctru/Makefile +++ b/libctru/Makefile @@ -24,18 +24,17 @@ INCLUDES := include #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- -ARCH := -marm +ARCH := -march=armv6k -mtune=mpcore -CFLAGS := -g -Wall -O2 -mthumb-interwork\ - -mcpu=mpcore -mtune=mpcore \ - -mfpu=vfp -ffast-math -mword-relocations \ - $(ARCH) +CFLAGS := -g -Wall -O2 -mword-relocations \ + -fomit-frame-pointer -ffast-math \ + $(ARCH) CFLAGS += $(INCLUDE) -DARM11 -D_3DS -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -ASFLAGS := -g $(ARCH) -mcpu=mpcore -mtune=mpcore -LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 + +ASFLAGS := -g $(ARCH) #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing