(gdb) target remote 192.168.1.85:4000 Remote debugging using 192.168.1.85:4000 warning: multi-threaded target stopped without sending a thread-id, using first non-exited thread [Switching to Thread 335] svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263 263 svc 0x24 (gdb) c Continuing. User picked target 'grim-win' (engine ID 'grim', game ID 'grim')... Looking for a plugin supporting this target... Grim 3ds initsize w:640 h:480 pixelformat: 4 8 8 8 8 3ds initsize w:640 h:480 pixelformat: 4 8 8 8 8 INFO: TinyGL front buffer pixel format: RGBA8888@4 WARNING: Lua_V1::SetGamma, implement opcode, level: 0.000000! WARNING: !!!! Trying to call MakeSectorActive without a scene! WARNING: !!!! Trying to call MakeSectorActive without a scene! WARNING: !!!! Trying to call MakeSectorActive without a scene! WARNING: !!!! Trying to call MakeSectorActive without a scene! WARNING: !!!! Trying to call MakeSectorActive without a scene! Thread 8 received signal SIGSEGV, Segmentation fault. [Switching to Thread 347] 0x00119f28 in hidScanInput () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185 185 Id = hidSharedMem[4];//PAD / circle-pad (gdb) i r r0 0x0 0 r1 0xfff1a80c -940020 r2 0x0 0 r3 0x10000000 268435456 r4 0xba2d64 12201316 r5 0x0 0 r6 0xba2d28 12201256 r7 0xba2d68 12201320 r8 0xba2d5c 12201308 r9 0x0 0 r10 0x1 1 r11 0x0 0 r12 0x0 0 sp 0x81492b0 0x81492b0 lr 0x119f1c 1154844 pc 0x119f28 0x119f28 cpsr 0x60000010 1610612752 fpscr 0x3c00000 62914560 fpexc 0x40000000 1073741824 (gdb) thread apply all bt full Thread 8 (Thread 347 (TLS: 0x1ffb3e00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)): #0 0x00119f28 in hidScanInput () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185 Id = 0 #1 0x0016914c in N3DS::eventThreadFunc (arg=0x802fb3c) at backends/platform/3ds/osystem-events.cpp:108 held = keysPressed = keysReleased = circle = {dx = -7, dy = -7} osys = 0x802f098 eventQueue = 0x802fb3c touchStartTime = 227 lastTouch = {px = , py = } lastCircle = {dx = , dy = } borderSnapZone = 6 event = {type = Common::EVENT_LBUTTONUP, kbdRepeat = false, kbd = {keycode = Common::KEYCODE_INVALID, ascii = 0, flags = 0 '\000'}, mouse = {x = 282, y = 227}, customType = 0, path = {> = {static npos = 4294967295, static _builtinCapacity = 24, _size = 0, _str = 0x8149304 "", {_storage = '\000' , _extern = {_refCount = 0x0, _capacity = 0}}}, }, relMouse = {x = 0, y = 0}, joystick = {axis = 1 '\001', position = 1433, button = 0 '\000'}} #2 0x0011b6d4 in _thread_begin (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37 t = tv = #3 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 7 (Thread 346 (TLS: 0x1ffb3c00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)): #0 svcSleepThread () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:85 No locals. #1 0x00168bd4 in N3DS::timerThreadFunc (arg=0x802f098) at backends/platform/3ds/osystem-events.cpp:242 osys = 0x802f098 tm = 0x804f6f0 #2 0x0011b6d4 in _thread_begin (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37 t = tv = #3 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 6 (Thread 345 (TLS: 0x1ffb3a00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)): #0 svcSleepThread () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:85 No locals. #1 0x001687c0 in N3DS::audioThreadFunc (arg=0x803b310) at backends/platform/3ds/osystem-audio.cpp:56 buf = mixer = 0x803b310 osys = 0x802f098 channel = 0 bufferIndex = 1 bufferCount = 2 sampleRate = 22050 bufferSamples = 1024 bufferSize = 4096 buffers = {{{data_pcm8 = 0x301c9f00 "", data_pcm16 = 0x301c9f00, data_adpcm = 0x301c9f00 "", data_vaddr = 0x301c9f00}, nsamples = 0, adpcm_data = 0x0, offset = 0, looping = false, status = 0 '\000', sequence_id = 0, next = 0x0}, {{data_pcm8 = 0x301caf00 "", data_pcm16 = 0x301caf00, data_adpcm = 0x301caf00 "", data_vaddr = 0x301caf00}, nsamples = 0, adpcm_data = 0x0, offset = 0, looping = false, status = 0 '\000', sequence_id = 0, next = 0x0}} #2 0x0011b6d4 in _thread_begin (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37 t = tv = #3 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 5 (Thread 344 (TLS: 0x1ffb3800, running, dynamic prio.: 24, static prio.: 24, ideal core: 0, running on core 0)): #0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263 No locals. #1 0x004fc33c in ndspWaitForIrq (timeout_ns=18446744073709551615) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:44 rc = waitOk = false waitOk = rc = #2 ndspSync () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:407 _receiveState = counter = next = #3 ndspThreadMain (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:432 No locals. #4 0x0011b6d4 in _thread_begin (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37 t = tv = #5 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 4 (Thread 342 (TLS: 0x1ffb3600, running, dynamic prio.: 48, static prio.: 48, ideal core: 0, running on core 0)): #0 svcSendSyncRequest () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:338 No locals. #1 0x0011a618 in IRRST_Shutdown () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/irrst.c:171 cmdbuf = ret = 0 #2 irrstExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/irrst.c:77 No locals. #3 0x00119ce8 in hidExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:99 i = #4 0x0010f1d4 in __appExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/system/appExit.c:19 No locals. #5 0x0010f1a4 in __ctru_exit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/system/stack_adjust.s:30 No locals. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 3 (Thread 340 (TLS: 0x1ffb3400, running, dynamic prio.: 26, static prio.: 26, ideal core: 0, running on core 0)): #0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263 No locals. #1 0x001192e4 in gspEventThreadMain (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/gspgpu.c:346 No locals. #2 0x0011b6d4 in _thread_begin (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37 t = tv = #3 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 2 (Thread 336 (TLS: 0x1ffb3200, idle, dynamic prio.: 49, static prio.: 49, ideal core: 0, running on core 0)): #0 svcWaitSynchronizationN () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:273 No locals. #1 0x00113ba0 in aptEventHandler (arg=) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/apt.c:423 id = 0 signal = res = #2 0x00000000 in ?? () No symbol table info available. Backtrace stopped: previous frame identical to this frame (corrupt stack?) Thread 1 (Thread 335 (TLS: 0x1ffb3000, idle, dynamic prio.: 48, static prio.: 48, ideal core: 0, running on core 0)): #0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263 No locals. #1 0x001625d8 in main (argc=1, argv=0x8000000) at backends/platform/3ds/main.cpp:86 systemModel = 2 '\002' soc_sharedmem_size = 65536 soc_sharedmem = commandLine = {argumentCount = 1, argumentsValue = 0x8000000} mainThreadPriority = 48 mainThread = 0x801e008 res = (gdb) disassemble hidScanInput Dump of assembler code for function hidScanInput: 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr} 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 0x00119f0c <+12>: ldr r3, [r4] 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 0x00119f14 <+20>: str r3, [r7] 0x00119f18 <+24>: bl 0x11a6c4 0x00119f1c <+28>: mov r2, #0 0x00119f20 <+32>: ldr r3, [r8] 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c => 0x00119f28 <+40>: ldr r1, [r3, #16] 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 0x00119f38 <+56>: cmp r1, #7 0x00119f3c <+60>: str r2, [r4] 0x00119f40 <+64>: str r2, [lr] 0x00119f44 <+68>: str r2, [r12] 0x00119f48 <+72>: str r2, [r6] 0x00119f4c <+76>: strh r2, [r6, #4] 0x00119f50 <+80>: str r2, [r5] 0x00119f54 <+84>: strh r2, [r5, #4] 0x00119f58 <+88>: bhi 0x119f98 0x00119f5c <+92>: cmp r1, r2 0x00119f60 <+96>: bne 0x11a160 0x00119f64 <+100>: ldrd r0, [r3, #8] 0x00119f68 <+104>: ldr r2, [r3, #4] 0x00119f6c <+108>: ldr r9, [r3] 0x00119f70 <+112>: cmp r2, r1 0x00119f74 <+116>: cmpeq r9, r0 0x00119f78 <+120>: orr r2, r2, r1 0x00119f7c <+124>: moveq r1, #1 0x00119f80 <+128>: movne r1, #0 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31 0x00119f88 <+136>: moveq r1, #52 ; 0x34 0x00119f8c <+140>: moveq r2, #40 ; 0x28 0x00119f90 <+144>: bne 0x119fb0 0x00119f94 <+148>: b 0x119fa0 0x00119f98 <+152>: mov r1, #164 ; 0xa4 0x00119f9c <+156>: mov r2, #152 ; 0x98 0x00119fa0 <+160>: ldr r2, [r3, r2] 0x00119fa4 <+164>: ldr r0, [r3, r1] 0x00119fa8 <+168>: str r2, [r4] 0x00119fac <+172>: str r0, [lr] 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8 0x00119fb4 <+180>: cmp r1, #7 0x00119fb8 <+184>: movcc r2, r1 0x00119fbc <+188>: movcs r2, #7 0x00119fc0 <+192>: cmp r1, #0 0x00119fc4 <+196>: bne 0x11a134 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8 0x00119fd8 <+216>: cmp r1, r0 0x00119fdc <+220>: cmpeq r9, lr 0x00119fe0 <+224>: orr r1, r1, r0 0x00119fe4 <+228>: moveq r0, #1 0x00119fe8 <+232>: movne r0, #0 0x00119fec <+236>: orrs r0, r0, r1, lsr #31 0x00119ff0 <+240>: beq 0x11a134 0x00119ff4 <+244>: bl 0x11a778 0x00119ff8 <+248>: ldr r1, [r4] 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c 0x0011a000 <+256>: ldr r2, [r7] 0x0011a004 <+260>: orr r0, r0, r1 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 0x0011a00c <+268>: ldr r3, [r3] 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 0x0011a014 <+276>: bic r1, r0, r2 0x0011a018 <+280>: str r1, [lr] 0x0011a01c <+284>: cmp r3, #0 0x0011a020 <+288>: bic lr, r2, r0 0x0011a024 <+292>: str r0, [r4] 0x0011a028 <+296>: str lr, [r12] 0x0011a02c <+300>: beq 0x11a068 0x0011a030 <+304>: cmp r0, r2 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c 0x0011a03c <+316>: ldreq r3, [r2] 0x0011a040 <+320>: strne r1, [r2] 0x0011a044 <+324>: sub r3, r3, #1 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 0x0011a04c <+332>: cmp r3, #0 0x0011a050 <+336>: str r3, [r2] 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 0x0011a058 <+344>: ldreq r3, [r3] 0x0011a05c <+348>: streq r3, [r2] 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c 0x0011a064 <+356>: streq r0, [r3] 0x0011a068 <+360>: ldr r3, [r8] 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118 0x0011a070 <+368>: cmp r1, #7 0x0011a074 <+372>: movcc r2, r1 0x0011a078 <+376>: movcs r2, #7 0x0011a07c <+380>: cmp r1, #0 0x0011a080 <+384>: bne 0x11a114 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108 0x0011a094 <+404>: cmp r1, r12 0x0011a098 <+408>: cmpeq lr, r0 0x0011a09c <+412>: moveq r0, #1 0x0011a0a0 <+416>: movne r0, #0 0x0011a0a4 <+420>: orr r1, r1, r12 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31 0x0011a0ac <+428>: beq 0x11a114 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168 0x0011a0b4 <+436>: cmp r1, #31 0x0011a0b8 <+440>: movcc r2, r1 0x0011a0bc <+444>: movcs r2, #31 0x0011a0c0 <+448>: cmp r1, #0 0x0011a0c4 <+452>: bne 0x11a0f4 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160 0x0011a0d8 <+472>: cmp r1, r0 0x0011a0dc <+476>: cmpeq lr, r12 0x0011a0e0 <+480>: orr r1, r1, r0 0x0011a0e4 <+484>: moveq r0, #1 0x0011a0e8 <+488>: movne r0, #0 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc} 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178 0x0011a100 <+512>: add r3, r3, #376 ; 0x178 0x0011a104 <+516>: str r0, [r5] 0x0011a108 <+520>: ldrh r3, [r3, #4] 0x0011a10c <+524>: strh r3, [r5, #4] 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc} 0x0011a114 <+532>: add r2, r2, r2, lsl #1 0x0011a118 <+536>: add r2, r3, r2, lsl #1 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128 0x0011a120 <+544>: add r1, r2, #296 ; 0x128 0x0011a124 <+548>: str r0, [r6] 0x0011a128 <+552>: ldrh r2, [r1, #4] 0x0011a12c <+556>: strh r2, [r6, #4] 0x0011a130 <+560>: b 0x11a0b0 0x0011a134 <+564>: add r2, r2, #25 0x0011a138 <+568>: lsl r1, r2, #3 0x0011a13c <+572>: add r1, r1, #4 0x0011a140 <+576>: ldr r1, [r3, r1] 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3] 0x0011a148 <+584>: cmp r1, #0 0x0011a14c <+588>: ldrne r3, [r4] 0x0011a150 <+592>: str r0, [r12] 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000 0x0011a158 <+600>: strne r3, [r4] 0x0011a15c <+604>: b 0x119ff4 0x0011a160 <+608>: lsl r1, r1, #4 0x0011a164 <+612>: add r2, r1, #40 ; 0x28 0x0011a168 <+616>: add r1, r1, #52 ; 0x34 0x0011a16c <+620>: b 0x119fa0 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp 0x0011a18c <+652>: adcseq r0, r9, r12 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp 0x0011a198 <+664>: adcseq r0, r9, r8 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0 End of assembler dump. (gdb) disas /m hidScanInput Dump of assembler code for function hidScanInput: 157 u32 hidCheckSectionUpdateTime(vu32 *sharedmem_section, u32 id) 158 { 159 s64 tick0=0, tick1=0; 160 161 if(id==0) 0x00119f5c <+92>: cmp r1, r2 0x00119f60 <+96>: bne 0x11a160 0x00119fc0 <+192>: cmp r1, #0 0x00119fc4 <+196>: bne 0x11a134 0x0011a07c <+380>: cmp r1, #0 0x0011a080 <+384>: bne 0x11a114 0x0011a0c0 <+448>: cmp r1, #0 0x0011a0c4 <+452>: bne 0x11a0f4 162 { 163 tick0 = *((u64*)&sharedmem_section[0]); 0x00119f68 <+104>: ldr r2, [r3, #4] 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158 164 tick1 = *((u64*)&sharedmem_section[2]); 0x00119f64 <+100>: ldrd r0, [r3, #8] 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160 165 166 if(tick0==tick1 || tick0<0 || tick1<0)return 1; 0x00119f6c <+108>: ldr r9, [r3] 0x00119f70 <+112>: cmp r2, r1 0x00119f74 <+116>: cmpeq r9, r0 0x00119f78 <+120>: orr r2, r2, r1 0x00119f7c <+124>: moveq r1, #1 0x00119f80 <+128>: movne r1, #0 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31 0x00119f88 <+136>: moveq r1, #52 ; 0x34 0x00119f8c <+140>: moveq r2, #40 ; 0x28 0x00119f90 <+144>: bne 0x119fb0 0x00119f94 <+148>: b 0x119fa0 0x00119f98 <+152>: mov r1, #164 ; 0xa4 0x00119f9c <+156>: mov r2, #152 ; 0x98 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8 0x00119fd8 <+216>: cmp r1, r0 0x00119fdc <+220>: cmpeq r9, lr 0x00119fe0 <+224>: orr r1, r1, r0 0x00119fe4 <+228>: moveq r0, #1 0x00119fe8 <+232>: movne r0, #0 0x00119fec <+236>: orrs r0, r0, r1, lsr #31 0x00119ff0 <+240>: beq 0x11a134 0x0011a094 <+404>: cmp r1, r12 0x0011a098 <+408>: cmpeq lr, r0 0x0011a09c <+412>: moveq r0, #1 0x0011a0a0 <+416>: movne r0, #0 0x0011a0a4 <+420>: orr r1, r1, r12 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31 0x0011a0ac <+428>: beq 0x11a114 0x0011a0d8 <+472>: cmp r1, r0 0x0011a0dc <+476>: cmpeq lr, r12 0x0011a0e0 <+480>: orr r1, r1, r0 0x0011a0e4 <+484>: moveq r0, #1 0x0011a0e8 <+488>: movne r0, #0 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc} 167 } 168 169 return 0; 170 } 171 172 void hidScanInput(void) 173 { 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr} 174 u32 Id=0; 175 176 kOld = kHeld; 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 0x00119f0c <+12>: ldr r3, [r4] 0x00119f14 <+20>: str r3, [r7] 177 irrstScanInput(); 0x00119f18 <+24>: bl 0x11a6c4 178 179 kHeld = 0; 0x00119f1c <+28>: mov r2, #0 0x00119f3c <+60>: str r2, [r4] 180 memset(&cPos, 0, sizeof(circlePosition)); 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 0x00119f40 <+64>: str r2, [lr] 181 memset(&tPos, 0, sizeof(touchPosition)); 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 0x00119f44 <+68>: str r2, [r12] 182 memset(&aVec, 0, sizeof(accelVector)); 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c 0x00119f48 <+72>: str r2, [r6] 0x00119f4c <+76>: strh r2, [r6, #4] 183 memset(&gRate, 0, sizeof(angularRate)); 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 0x00119f50 <+80>: str r2, [r5] 0x00119f54 <+84>: strh r2, [r5, #4] 184 185 Id = hidSharedMem[4];//PAD / circle-pad 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 0x00119f20 <+32>: ldr r3, [r8] => 0x00119f28 <+40>: ldr r1, [r3, #16] 186 if(Id>7)Id=7; 0x00119f38 <+56>: cmp r1, #7 0x00119f58 <+88>: bhi 0x119f98 187 if(hidCheckSectionUpdateTime(hidSharedMem, Id)==0) 188 { 189 kHeld = hidSharedMem[10 + Id*4]; 0x00119fa0 <+160>: ldr r2, [r3, r2] 0x00119fa8 <+168>: str r2, [r4] 0x0011a160 <+608>: lsl r1, r1, #4 0x0011a164 <+612>: add r2, r1, #40 ; 0x28 190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3]; 0x00119fa4 <+164>: ldr r0, [r3, r1] 0x00119fac <+172>: str r0, [lr] 0x0011a168 <+616>: add r1, r1, #52 ; 0x34 0x0011a16c <+620>: b 0x119fa0 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp 0x0011a18c <+652>: adcseq r0, r9, r12 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp 0x0011a198 <+664>: adcseq r0, r9, r8 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0 191 } 192 193 Id = hidSharedMem[42 + 4];//Touch-screen 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8 194 if(Id>7)Id=7; 0x00119fb4 <+180>: cmp r1, #7 0x00119fb8 <+184>: movcc r2, r1 0x00119fbc <+188>: movcs r2, #7 195 if(hidCheckSectionUpdateTime(&hidSharedMem[42], Id)==0) 196 { 197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2]; 0x0011a134 <+564>: add r2, r2, #25 0x0011a138 <+568>: lsl r1, r2, #3 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3] 0x0011a150 <+592>: str r0, [r12] 198 if (hidSharedMem[42 + 8 + Id*2 + 1]) 0x0011a13c <+572>: add r1, r1, #4 0x0011a140 <+576>: ldr r1, [r3, r1] 0x0011a148 <+584>: cmp r1, #0 199 kHeld |= KEY_TOUCH; 0x0011a14c <+588>: ldrne r3, [r4] 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000 0x0011a158 <+600>: strne r3, [r4] 0x0011a15c <+604>: b 0x119ff4 200 } 201 202 kHeld |= irrstKeysHeld(); 0x00119ff4 <+244>: bl 0x11a778 0x00119ff8 <+248>: ldr r1, [r4] 0x0011a004 <+260>: orr r0, r0, r1 0x0011a024 <+292>: str r0, [r4] 203 204 kDown = (~kOld) & kHeld; 0x0011a000 <+256>: ldr r2, [r7] 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 0x0011a014 <+276>: bic r1, r0, r2 0x0011a018 <+280>: str r1, [lr] 205 kUp = kOld & (~kHeld); 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 0x0011a020 <+288>: bic lr, r2, r0 0x0011a028 <+296>: str lr, [r12] 206 207 if (kDelay) 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c 0x0011a00c <+268>: ldr r3, [r3] 0x0011a01c <+284>: cmp r3, #0 0x0011a02c <+300>: beq 0x11a068 208 { 209 if (kHeld != kOld) 0x0011a030 <+304>: cmp r0, r2 210 { 211 kCount = kDelay; 212 kRepeat = kDown; 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c 0x0011a040 <+320>: strne r1, [r2] 213 } 214 215 if (--kCount == 0) 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 0x0011a03c <+316>: ldreq r3, [r2] 0x0011a044 <+324>: sub r3, r3, #1 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 0x0011a04c <+332>: cmp r3, #0 0x0011a050 <+336>: str r3, [r2] 216 { 217 kCount = kInterval; 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 0x0011a058 <+344>: ldreq r3, [r3] 0x0011a05c <+348>: streq r3, [r2] 218 kRepeat = kHeld; 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c 0x0011a064 <+356>: streq r0, [r3] 219 } 220 } 221 222 Id = hidSharedMem[66 + 4];//Accelerometer 0x0011a068 <+360>: ldr r3, [r8] 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118 223 if(Id>7)Id=7; 0x0011a070 <+368>: cmp r1, #7 0x0011a074 <+372>: movcc r2, r1 0x0011a078 <+376>: movcs r2, #7 224 if(hidCheckSectionUpdateTime(&hidSharedMem[66], Id)==0) 225 { 226 aVec = ((accelVector*)&hidSharedMem[66 + 8])[Id]; 0x0011a114 <+532>: add r2, r2, r2, lsl #1 0x0011a118 <+536>: add r2, r3, r2, lsl #1 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128 0x0011a120 <+544>: add r1, r2, #296 ; 0x128 0x0011a124 <+548>: str r0, [r6] 0x0011a128 <+552>: ldrh r2, [r1, #4] 0x0011a12c <+556>: strh r2, [r6, #4] 0x0011a130 <+560>: b 0x11a0b0 227 } 228 229 Id = hidSharedMem[86 + 4];//Gyroscope 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168 230 if(Id>31)Id=31; 0x0011a0b4 <+436>: cmp r1, #31 0x0011a0b8 <+440>: movcc r2, r1 0x0011a0bc <+444>: movcs r2, #31 231 if(hidCheckSectionUpdateTime(&hidSharedMem[86], Id)==0) 232 { 233 gRate = ((angularRate*)&hidSharedMem[86 + 8])[Id]; 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178 0x0011a100 <+512>: add r3, r3, #376 ; 0x178 0x0011a104 <+516>: str r0, [r5] 0x0011a108 <+520>: ldrh r3, [r3, #4] 0x0011a10c <+524>: strh r3, [r5, #4] 234 } 235 } 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc} (gdb) disassemble/s hidScanInput Dump of assembler code for function hidScanInput: /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c: 176 kOld = kHeld; 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr} 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 0x00119f0c <+12>: ldr r3, [r4] 184 185 Id = hidSharedMem[4];//PAD / circle-pad 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 176 kOld = kHeld; 0x00119f14 <+20>: str r3, [r7] 177 irrstScanInput(); 0x00119f18 <+24>: bl 0x11a6c4 178 179 kHeld = 0; 0x00119f1c <+28>: mov r2, #0 184 185 Id = hidSharedMem[4];//PAD / circle-pad 0x00119f20 <+32>: ldr r3, [r8] 182 memset(&aVec, 0, sizeof(accelVector)); 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c 184 185 Id = hidSharedMem[4];//PAD / circle-pad => 0x00119f28 <+40>: ldr r1, [r3, #16] 183 memset(&gRate, 0, sizeof(angularRate)); 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 180 memset(&cPos, 0, sizeof(circlePosition)); 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 181 memset(&tPos, 0, sizeof(touchPosition)); 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 186 if(Id>7)Id=7; 0x00119f38 <+56>: cmp r1, #7 179 kHeld = 0; 0x00119f3c <+60>: str r2, [r4] 180 memset(&cPos, 0, sizeof(circlePosition)); 0x00119f40 <+64>: str r2, [lr] 181 memset(&tPos, 0, sizeof(touchPosition)); 0x00119f44 <+68>: str r2, [r12] 182 memset(&aVec, 0, sizeof(accelVector)); 0x00119f48 <+72>: str r2, [r6] 0x00119f4c <+76>: strh r2, [r6, #4] 183 memset(&gRate, 0, sizeof(angularRate)); 0x00119f50 <+80>: str r2, [r5] 0x00119f54 <+84>: strh r2, [r5, #4] 186 if(Id>7)Id=7; 0x00119f58 <+88>: bhi 0x119f98 161 if(id==0) 0x00119f5c <+92>: cmp r1, r2 0x00119f60 <+96>: bne 0x11a160 162 { 163 tick0 = *((u64*)&sharedmem_section[0]); 0x00119f64 <+100>: ldrd r0, [r3, #8] 165 166 if(tick0==tick1 || tick0<0 || tick1<0)return 1; 0x00119f68 <+104>: ldr r2, [r3, #4] 0x00119f6c <+108>: ldr r9, [r3] 0x00119f70 <+112>: cmp r2, r1 0x00119f74 <+116>: cmpeq r9, r0 0x00119f78 <+120>: orr r2, r2, r1 0x00119f7c <+124>: moveq r1, #1 0x00119f80 <+128>: movne r1, #0 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31 0x00119f88 <+136>: moveq r1, #52 ; 0x34 0x00119f8c <+140>: moveq r2, #40 ; 0x28 0x00119f90 <+144>: bne 0x119fb0 0x00119f94 <+148>: b 0x119fa0 0x00119f98 <+152>: mov r1, #164 ; 0xa4 0x00119f9c <+156>: mov r2, #152 ; 0x98 187 if(hidCheckSectionUpdateTime(hidSharedMem, Id)==0) 188 { 189 kHeld = hidSharedMem[10 + Id*4]; 0x00119fa0 <+160>: ldr r2, [r3, r2] 190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3]; 0x00119fa4 <+164>: ldr r0, [r3, r1] 189 kHeld = hidSharedMem[10 + Id*4]; 0x00119fa8 <+168>: str r2, [r4] 190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3]; 0x00119fac <+172>: str r0, [lr] 191 } 192 193 Id = hidSharedMem[42 + 4];//Touch-screen 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8 194 if(Id>7)Id=7; 0x00119fb4 <+180>: cmp r1, #7 0x00119fb8 <+184>: movcc r2, r1 0x00119fbc <+188>: movcs r2, #7 161 if(id==0) 0x00119fc0 <+192>: cmp r1, #0 0x00119fc4 <+196>: bne 0x11a134 162 { 163 tick0 = *((u64*)&sharedmem_section[0]); 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac 164 tick1 = *((u64*)&sharedmem_section[2]); 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0 165 166 if(tick0==tick1 || tick0<0 || tick1<0)return 1; 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8 0x00119fd8 <+216>: cmp r1, r0 0x00119fdc <+220>: cmpeq r9, lr 0x00119fe0 <+224>: orr r1, r1, r0 0x00119fe4 <+228>: moveq r0, #1 0x00119fe8 <+232>: movne r0, #0 0x00119fec <+236>: orrs r0, r0, r1, lsr #31 0x00119ff0 <+240>: beq 0x11a134 200 } 201 202 kHeld |= irrstKeysHeld(); 0x00119ff4 <+244>: bl 0x11a778 0x00119ff8 <+248>: ldr r1, [r4] 206 207 if (kDelay) 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c 204 kDown = (~kOld) & kHeld; 0x0011a000 <+256>: ldr r2, [r7] 202 kHeld |= irrstKeysHeld(); 0x0011a004 <+260>: orr r0, r0, r1 203 204 kDown = (~kOld) & kHeld; 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 206 207 if (kDelay) 0x0011a00c <+268>: ldr r3, [r3] 205 kUp = kOld & (~kHeld); 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 204 kDown = (~kOld) & kHeld; 0x0011a014 <+276>: bic r1, r0, r2 0x0011a018 <+280>: str r1, [lr] 206 207 if (kDelay) 0x0011a01c <+284>: cmp r3, #0 205 kUp = kOld & (~kHeld); 0x0011a020 <+288>: bic lr, r2, r0 202 kHeld |= irrstKeysHeld(); 0x0011a024 <+292>: str r0, [r4] 205 kUp = kOld & (~kHeld); 0x0011a028 <+296>: str lr, [r12] 206 207 if (kDelay) 0x0011a02c <+300>: beq 0x11a068 208 { 209 if (kHeld != kOld) 0x0011a030 <+304>: cmp r0, r2 213 } 214 215 if (--kCount == 0) 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 212 kRepeat = kDown; 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c 213 } 214 215 if (--kCount == 0) 0x0011a03c <+316>: ldreq r3, [r2] 212 kRepeat = kDown; 0x0011a040 <+320>: strne r1, [r2] 213 } 214 215 if (--kCount == 0) 0x0011a044 <+324>: sub r3, r3, #1 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 0x0011a04c <+332>: cmp r3, #0 0x0011a050 <+336>: str r3, [r2] 216 { 217 kCount = kInterval; 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 0x0011a058 <+344>: ldreq r3, [r3] 0x0011a05c <+348>: streq r3, [r2] 218 kRepeat = kHeld; 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c 0x0011a064 <+356>: streq r0, [r3] 219 } 220 } 221 222 Id = hidSharedMem[66 + 4];//Accelerometer 0x0011a068 <+360>: ldr r3, [r8] 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118 223 if(Id>7)Id=7; 0x0011a070 <+368>: cmp r1, #7 0x0011a074 <+372>: movcc r2, r1 0x0011a078 <+376>: movcs r2, #7 161 if(id==0) 0x0011a07c <+380>: cmp r1, #0 0x0011a080 <+384>: bne 0x11a114 162 { 163 tick0 = *((u64*)&sharedmem_section[0]); 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c 164 tick1 = *((u64*)&sharedmem_section[2]); 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114 163 tick0 = *((u64*)&sharedmem_section[0]); 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108 165 166 if(tick0==tick1 || tick0<0 || tick1<0)return 1; 0x0011a094 <+404>: cmp r1, r12 0x0011a098 <+408>: cmpeq lr, r0 0x0011a09c <+412>: moveq r0, #1 0x0011a0a0 <+416>: movne r0, #0 0x0011a0a4 <+420>: orr r1, r1, r12 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31 0x0011a0ac <+428>: beq 0x11a114 227 } 228 229 Id = hidSharedMem[86 + 4];//Gyroscope 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168 230 if(Id>31)Id=31; 0x0011a0b4 <+436>: cmp r1, #31 0x0011a0b8 <+440>: movcc r2, r1 0x0011a0bc <+444>: movcs r2, #31 161 if(id==0) 0x0011a0c0 <+448>: cmp r1, #0 0x0011a0c4 <+452>: bne 0x11a0f4 162 { 163 tick0 = *((u64*)&sharedmem_section[0]); 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158 164 tick1 = *((u64*)&sharedmem_section[2]); 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160 165 166 if(tick0==tick1 || tick0<0 || tick1<0)return 1; 0x0011a0d8 <+472>: cmp r1, r0 0x0011a0dc <+476>: cmpeq lr, r12 0x0011a0e0 <+480>: orr r1, r1, r0 0x0011a0e4 <+484>: moveq r0, #1 0x0011a0e8 <+488>: movne r0, #0 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc} 231 if(hidCheckSectionUpdateTime(&hidSharedMem[86], Id)==0) 232 { 233 gRate = ((angularRate*)&hidSharedMem[86 + 8])[Id]; 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178 0x0011a100 <+512>: add r3, r3, #376 ; 0x178 0x0011a104 <+516>: str r0, [r5] 0x0011a108 <+520>: ldrh r3, [r3, #4] 0x0011a10c <+524>: strh r3, [r5, #4] 234 } 235 } 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc} 226 aVec = ((accelVector*)&hidSharedMem[66 + 8])[Id]; 0x0011a114 <+532>: add r2, r2, r2, lsl #1 0x0011a118 <+536>: add r2, r3, r2, lsl #1 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128 0x0011a120 <+544>: add r1, r2, #296 ; 0x128 0x0011a124 <+548>: str r0, [r6] 0x0011a128 <+552>: ldrh r2, [r1, #4] 0x0011a12c <+556>: strh r2, [r6, #4] 0x0011a130 <+560>: b 0x11a0b0 197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2]; 0x0011a134 <+564>: add r2, r2, #25 0x0011a138 <+568>: lsl r1, r2, #3 198 if (hidSharedMem[42 + 8 + Id*2 + 1]) 0x0011a13c <+572>: add r1, r1, #4 0x0011a140 <+576>: ldr r1, [r3, r1] 197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2]; 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3] 198 if (hidSharedMem[42 + 8 + Id*2 + 1]) 0x0011a148 <+584>: cmp r1, #0 199 kHeld |= KEY_TOUCH; 0x0011a14c <+588>: ldrne r3, [r4] 197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2]; 0x0011a150 <+592>: str r0, [r12] 199 kHeld |= KEY_TOUCH; 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000 0x0011a158 <+600>: strne r3, [r4] 0x0011a15c <+604>: b 0x119ff4 189 kHeld = hidSharedMem[10 + Id*4]; 0x0011a160 <+608>: lsl r1, r1, #4 0x0011a164 <+612>: add r2, r1, #40 ; 0x28 190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3]; 0x0011a168 <+616>: add r1, r1, #52 ; 0x34 0x0011a16c <+620>: b 0x119fa0 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp 0x0011a18c <+652>: adcseq r0, r9, r12 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp 0x0011a198 <+664>: adcseq r0, r9, r8 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0 End of assembler dump. (gdb) info frame function hidScanInput Stack frame at 0x81492d0: pc = 0x119f28 in hidScanInput (/home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185); saved pc = 0x16914c called by frame at 0x8149350 source language c. Arglist at 0x81492b0, args: Locals at 0x81492b0, Previous frame's sp is 0x81492d0 Saved registers: r4 at 0x81492b0, r5 at 0x81492b4, r6 at 0x81492b8, r7 at 0x81492bc, r8 at 0x81492c0, r9 at 0x81492c4, r10 at 0x81492c8, lr at 0x81492cc (gdb) x/8x $sp 0x81492b0: 0x0802f098 0x00000000 0x0802fb3c 0xfffffff9 0x81492c0: 0xfffffff9 0x00000000 0x00000001 0x0016914c (gdb) disconnect Ending remote debugging. (gdb)