Ticket #12598: GRIM gdb thorough.txt

File GRIM gdb thorough.txt, 38.2 KB (added by BallM4788, 3 years ago)
Line 
1(gdb) target remote 192.168.1.85:4000
2Remote debugging using 192.168.1.85:4000
3warning: multi-threaded target stopped without sending a thread-id, using first non-exited thread
4[Switching to Thread 335]
5svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263
6263 svc 0x24
7(gdb) c
8Continuing.
9User picked target 'grim-win' (engine ID 'grim', game ID 'grim')...
10 Looking for a plugin supporting this target... Grim
113ds initsize w:640 h:480
12pixelformat: 4 8 8 8 8
133ds initsize w:640 h:480
14pixelformat: 4 8 8 8 8
15INFO: TinyGL front buffer pixel format: RGBA8888@4
16WARNING: Lua_V1::SetGamma, implement opcode, level: 0.000000!
17WARNING: !!!! Trying to call MakeSectorActive without a scene!
18WARNING: !!!! Trying to call MakeSectorActive without a scene!
19WARNING: !!!! Trying to call MakeSectorActive without a scene!
20WARNING: !!!! Trying to call MakeSectorActive without a scene!
21WARNING: !!!! Trying to call MakeSectorActive without a scene!
22
23Thread 8 received signal SIGSEGV, Segmentation fault.
24[Switching to Thread 347]
250x00119f28 in hidScanInput () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185
26185 Id = hidSharedMem[4];//PAD / circle-pad
27
28(gdb) i r
29r0 0x0 0
30r1 0xfff1a80c -940020
31r2 0x0 0
32r3 0x10000000 268435456
33r4 0xba2d64 12201316
34r5 0x0 0
35r6 0xba2d28 12201256
36r7 0xba2d68 12201320
37r8 0xba2d5c 12201308
38r9 0x0 0
39r10 0x1 1
40r11 0x0 0
41r12 0x0 0
42sp 0x81492b0 0x81492b0
43lr 0x119f1c 1154844
44pc 0x119f28 0x119f28 <hidScanInput+40>
45cpsr 0x60000010 1610612752
46fpscr 0x3c00000 62914560
47fpexc 0x40000000 1073741824
48
49(gdb) thread apply all bt full
50
51Thread 8 (Thread 347 (TLS: 0x1ffb3e00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)):
52#0 0x00119f28 in hidScanInput () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185
53 Id = 0
54#1 0x0016914c in N3DS::eventThreadFunc (arg=0x802fb3c) at backends/platform/3ds/osystem-events.cpp:108
55 held = <optimized out>
56 keysPressed = <optimized out>
57 keysReleased = <optimized out>
58 circle = {dx = -7, dy = -7}
59 osys = 0x802f098
60 eventQueue = 0x802fb3c
61 touchStartTime = 227
62 lastTouch = {px = <optimized out>, py = <optimized out>}
63 lastCircle = {dx = <optimized out>, dy = <optimized out>}
64 borderSnapZone = 6
65 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 = {<Common::BaseString<char>> = {static npos = 4294967295, static _builtinCapacity = 24, _size = 0, _str = 0x8149304 "", {_storage = '\000' <repeats 23 times>, _extern = {_refCount = 0x0, _capacity = 0}}}, <No data fields>}, relMouse = {x = 0, y = 0}, joystick = {axis = 1 '\001', position = 1433, button = 0 '\000'}}
66#2 0x0011b6d4 in _thread_begin (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37
67 t = <optimized out>
68 tv = <optimized out>
69#3 0x00000000 in ?? ()
70No symbol table info available.
71Backtrace stopped: previous frame identical to this frame (corrupt stack?)
72
73Thread 7 (Thread 346 (TLS: 0x1ffb3c00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)):
74#0 svcSleepThread () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:85
75No locals.
76#1 0x00168bd4 in N3DS::timerThreadFunc (arg=0x802f098) at backends/platform/3ds/osystem-events.cpp:242
77 osys = 0x802f098
78 tm = 0x804f6f0
79#2 0x0011b6d4 in _thread_begin (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37
80 t = <optimized out>
81 tv = <optimized out>
82#3 0x00000000 in ?? ()
83No symbol table info available.
84Backtrace stopped: previous frame identical to this frame (corrupt stack?)
85
86Thread 6 (Thread 345 (TLS: 0x1ffb3a00, running, dynamic prio.: 47, static prio.: 47, ideal core: 0, running on core 0)):
87#0 svcSleepThread () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:85
88No locals.
89#1 0x001687c0 in N3DS::audioThreadFunc (arg=0x803b310) at backends/platform/3ds/osystem-audio.cpp:56
90 buf = <optimized out>
91 mixer = 0x803b310
92 osys = 0x802f098
93 channel = 0
94 bufferIndex = 1
95 bufferCount = 2
96 sampleRate = 22050
97 bufferSamples = 1024
98 bufferSize = 4096
99 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}}
100#2 0x0011b6d4 in _thread_begin (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37
101 t = <optimized out>
102 tv = <optimized out>
103#3 0x00000000 in ?? ()
104No symbol table info available.
105Backtrace stopped: previous frame identical to this frame (corrupt stack?)
106
107Thread 5 (Thread 344 (TLS: 0x1ffb3800, running, dynamic prio.: 24, static prio.: 24, ideal core: 0, running on core 0)):
108#0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263
109No locals.
110#1 0x004fc33c in ndspWaitForIrq (timeout_ns=18446744073709551615) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:44
111 rc = <optimized out>
112 waitOk = false
113 waitOk = <optimized out>
114 rc = <optimized out>
115#2 ndspSync () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:407
116 _receiveState = <optimized out>
117 counter = <optimized out>
118 next = <optimized out>
119#3 ndspThreadMain (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/ndsp/ndsp.c:432
120No locals.
121#4 0x0011b6d4 in _thread_begin (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37
122 t = <optimized out>
123 tv = <optimized out>
124#5 0x00000000 in ?? ()
125No symbol table info available.
126Backtrace stopped: previous frame identical to this frame (corrupt stack?)
127
128Thread 4 (Thread 342 (TLS: 0x1ffb3600, running, dynamic prio.: 48, static prio.: 48, ideal core: 0, running on core 0)):
129#0 svcSendSyncRequest () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:338
130No locals.
131#1 0x0011a618 in IRRST_Shutdown () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/irrst.c:171
132 cmdbuf = <optimized out>
133 ret = 0
134#2 irrstExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/irrst.c:77
135No locals.
136#3 0x00119ce8 in hidExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:99
137 i = <optimized out>
138#4 0x0010f1d4 in __appExit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/system/appExit.c:19
139No locals.
140#5 0x0010f1a4 in __ctru_exit () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/system/stack_adjust.s:30
141No locals.
142Backtrace stopped: previous frame identical to this frame (corrupt stack?)
143
144Thread 3 (Thread 340 (TLS: 0x1ffb3400, running, dynamic prio.: 26, static prio.: 26, ideal core: 0, running on core 0)):
145#0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263
146No locals.
147#1 0x001192e4 in gspEventThreadMain (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/gspgpu.c:346
148No locals.
149#2 0x0011b6d4 in _thread_begin (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/thread.c:37
150 t = <optimized out>
151 tv = <optimized out>
152#3 0x00000000 in ?? ()
153No symbol table info available.
154Backtrace stopped: previous frame identical to this frame (corrupt stack?)
155
156Thread 2 (Thread 336 (TLS: 0x1ffb3200, idle, dynamic prio.: 49, static prio.: 49, ideal core: 0, running on core 0)):
157#0 svcWaitSynchronizationN () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:273
158No locals.
159#1 0x00113ba0 in aptEventHandler (arg=<optimized out>) at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/apt.c:423
160 id = 0
161 signal = <optimized out>
162 res = <optimized out>
163#2 0x00000000 in ?? ()
164No symbol table info available.
165Backtrace stopped: previous frame identical to this frame (corrupt stack?)
166
167Thread 1 (Thread 335 (TLS: 0x1ffb3000, idle, dynamic prio.: 48, static prio.: 48, ideal core: 0, running on core 0)):
168#0 svcWaitSynchronization () at /home/atrus/Documents/repos/libctru-2.0.1/libctru/source/svc.s:263
169No locals.
170#1 0x001625d8 in main (argc=1, argv=0x8000000) at backends/platform/3ds/main.cpp:86
171 systemModel = 2 '\002'
172 soc_sharedmem_size = 65536
173 soc_sharedmem = <optimized out>
174 commandLine = {argumentCount = 1, argumentsValue = 0x8000000}
175 mainThreadPriority = 48
176 mainThread = 0x801e008
177 res = <optimized out>
178
179(gdb) disassemble hidScanInput
180Dump of assembler code for function hidScanInput:
181 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr}
182 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 <hidScanInput+624>
183 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 <hidScanInput+628>
184 0x00119f0c <+12>: ldr r3, [r4]
185 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 <hidScanInput+632>
186 0x00119f14 <+20>: str r3, [r7]
187 0x00119f18 <+24>: bl 0x11a6c4 <irrstScanInput>
188 0x00119f1c <+28>: mov r2, #0
189 0x00119f20 <+32>: ldr r3, [r8]
190 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c <hidScanInput+636>
191=> 0x00119f28 <+40>: ldr r1, [r3, #16]
192 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 <hidScanInput+640>
193 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 <hidScanInput+644>
194 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 <hidScanInput+648>
195 0x00119f38 <+56>: cmp r1, #7
196 0x00119f3c <+60>: str r2, [r4]
197 0x00119f40 <+64>: str r2, [lr]
198 0x00119f44 <+68>: str r2, [r12]
199 0x00119f48 <+72>: str r2, [r6]
200 0x00119f4c <+76>: strh r2, [r6, #4]
201 0x00119f50 <+80>: str r2, [r5]
202 0x00119f54 <+84>: strh r2, [r5, #4]
203 0x00119f58 <+88>: bhi 0x119f98 <hidScanInput+152>
204 0x00119f5c <+92>: cmp r1, r2
205 0x00119f60 <+96>: bne 0x11a160 <hidScanInput+608>
206 0x00119f64 <+100>: ldrd r0, [r3, #8]
207 0x00119f68 <+104>: ldr r2, [r3, #4]
208 0x00119f6c <+108>: ldr r9, [r3]
209 0x00119f70 <+112>: cmp r2, r1
210 0x00119f74 <+116>: cmpeq r9, r0
211 0x00119f78 <+120>: orr r2, r2, r1
212 0x00119f7c <+124>: moveq r1, #1
213 0x00119f80 <+128>: movne r1, #0
214 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31
215 0x00119f88 <+136>: moveq r1, #52 ; 0x34
216 0x00119f8c <+140>: moveq r2, #40 ; 0x28
217 0x00119f90 <+144>: bne 0x119fb0 <hidScanInput+176>
218 0x00119f94 <+148>: b 0x119fa0 <hidScanInput+160>
219 0x00119f98 <+152>: mov r1, #164 ; 0xa4
220 0x00119f9c <+156>: mov r2, #152 ; 0x98
221 0x00119fa0 <+160>: ldr r2, [r3, r2]
222 0x00119fa4 <+164>: ldr r0, [r3, r1]
223 0x00119fa8 <+168>: str r2, [r4]
224 0x00119fac <+172>: str r0, [lr]
225 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8
226 0x00119fb4 <+180>: cmp r1, #7
227 0x00119fb8 <+184>: movcc r2, r1
228 0x00119fbc <+188>: movcs r2, #7
229 0x00119fc0 <+192>: cmp r1, #0
230 0x00119fc4 <+196>: bne 0x11a134 <hidScanInput+564>
231 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4
232 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac
233 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0
234 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8
235 0x00119fd8 <+216>: cmp r1, r0
236 0x00119fdc <+220>: cmpeq r9, lr
237 0x00119fe0 <+224>: orr r1, r1, r0
238 0x00119fe4 <+228>: moveq r0, #1
239 0x00119fe8 <+232>: movne r0, #0
240 0x00119fec <+236>: orrs r0, r0, r1, lsr #31
241 0x00119ff0 <+240>: beq 0x11a134 <hidScanInput+564>
242 0x00119ff4 <+244>: bl 0x11a778 <irrstKeysHeld>
243 0x00119ff8 <+248>: ldr r1, [r4]
244 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c <hidScanInput+652>
245 0x0011a000 <+256>: ldr r2, [r7]
246 0x0011a004 <+260>: orr r0, r0, r1
247 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 <hidScanInput+656>
248 0x0011a00c <+268>: ldr r3, [r3]
249 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 <hidScanInput+660>
250 0x0011a014 <+276>: bic r1, r0, r2
251 0x0011a018 <+280>: str r1, [lr]
252 0x0011a01c <+284>: cmp r3, #0
253 0x0011a020 <+288>: bic lr, r2, r0
254 0x0011a024 <+292>: str r0, [r4]
255 0x0011a028 <+296>: str lr, [r12]
256 0x0011a02c <+300>: beq 0x11a068 <hidScanInput+360>
257 0x0011a030 <+304>: cmp r0, r2
258 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 <hidScanInput+664>
259 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c <hidScanInput+668>
260 0x0011a03c <+316>: ldreq r3, [r2]
261 0x0011a040 <+320>: strne r1, [r2]
262 0x0011a044 <+324>: sub r3, r3, #1
263 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 <hidScanInput+664>
264 0x0011a04c <+332>: cmp r3, #0
265 0x0011a050 <+336>: str r3, [r2]
266 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 <hidScanInput+672>
267 0x0011a058 <+344>: ldreq r3, [r3]
268 0x0011a05c <+348>: streq r3, [r2]
269 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c <hidScanInput+668>
270 0x0011a064 <+356>: streq r0, [r3]
271 0x0011a068 <+360>: ldr r3, [r8]
272 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118
273 0x0011a070 <+368>: cmp r1, #7
274 0x0011a074 <+372>: movcc r2, r1
275 0x0011a078 <+376>: movcs r2, #7
276 0x0011a07c <+380>: cmp r1, #0
277 0x0011a080 <+384>: bne 0x11a114 <hidScanInput+532>
278 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110
279 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c
280 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114
281 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108
282 0x0011a094 <+404>: cmp r1, r12
283 0x0011a098 <+408>: cmpeq lr, r0
284 0x0011a09c <+412>: moveq r0, #1
285 0x0011a0a0 <+416>: movne r0, #0
286 0x0011a0a4 <+420>: orr r1, r1, r12
287 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31
288 0x0011a0ac <+428>: beq 0x11a114 <hidScanInput+532>
289 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168
290 0x0011a0b4 <+436>: cmp r1, #31
291 0x0011a0b8 <+440>: movcc r2, r1
292 0x0011a0bc <+444>: movcs r2, #31
293 0x0011a0c0 <+448>: cmp r1, #0
294 0x0011a0c4 <+452>: bne 0x11a0f4 <hidScanInput+500>
295 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164
296 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c
297 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158
298 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160
299 0x0011a0d8 <+472>: cmp r1, r0
300 0x0011a0dc <+476>: cmpeq lr, r12
301 0x0011a0e0 <+480>: orr r1, r1, r0
302 0x0011a0e4 <+484>: moveq r0, #1
303 0x0011a0e8 <+488>: movne r0, #0
304 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31
305 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc}
306 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1
307 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1
308 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178
309 0x0011a100 <+512>: add r3, r3, #376 ; 0x178
310 0x0011a104 <+516>: str r0, [r5]
311 0x0011a108 <+520>: ldrh r3, [r3, #4]
312 0x0011a10c <+524>: strh r3, [r5, #4]
313 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc}
314 0x0011a114 <+532>: add r2, r2, r2, lsl #1
315 0x0011a118 <+536>: add r2, r3, r2, lsl #1
316 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128
317 0x0011a120 <+544>: add r1, r2, #296 ; 0x128
318 0x0011a124 <+548>: str r0, [r6]
319 0x0011a128 <+552>: ldrh r2, [r1, #4]
320 0x0011a12c <+556>: strh r2, [r6, #4]
321 0x0011a130 <+560>: b 0x11a0b0 <hidScanInput+432>
322 0x0011a134 <+564>: add r2, r2, #25
323 0x0011a138 <+568>: lsl r1, r2, #3
324 0x0011a13c <+572>: add r1, r1, #4
325 0x0011a140 <+576>: ldr r1, [r3, r1]
326 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3]
327 0x0011a148 <+584>: cmp r1, #0
328 0x0011a14c <+588>: ldrne r3, [r4]
329 0x0011a150 <+592>: str r0, [r12]
330 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000
331 0x0011a158 <+600>: strne r3, [r4]
332 0x0011a15c <+604>: b 0x119ff4 <hidScanInput+244>
333 0x0011a160 <+608>: lsl r1, r1, #4
334 0x0011a164 <+612>: add r2, r1, #40 ; 0x28
335 0x0011a168 <+616>: add r1, r1, #52 ; 0x34
336 0x0011a16c <+620>: b 0x119fa0 <hidScanInput+160>
337 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26
338 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26
339 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp
340 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26
341 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp
342 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp
343 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp
344 0x0011a18c <+652>: adcseq r0, r9, r12
345 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26
346 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp
347 0x0011a198 <+664>: adcseq r0, r9, r8
348 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26
349 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0
350End of assembler dump.
351
352(gdb) disas /m hidScanInput
353Dump of assembler code for function hidScanInput:
354157 u32 hidCheckSectionUpdateTime(vu32 *sharedmem_section, u32 id)
355
356158 {
357159 s64 tick0=0, tick1=0;
358
359160
360161 if(id==0)
361 0x00119f5c <+92>: cmp r1, r2
362 0x00119f60 <+96>: bne 0x11a160 <hidScanInput+608>
363 0x00119fc0 <+192>: cmp r1, #0
364 0x00119fc4 <+196>: bne 0x11a134 <hidScanInput+564>
365 0x0011a07c <+380>: cmp r1, #0
366 0x0011a080 <+384>: bne 0x11a114 <hidScanInput+532>
367 0x0011a0c0 <+448>: cmp r1, #0
368 0x0011a0c4 <+452>: bne 0x11a0f4 <hidScanInput+500>
369
370162 {
371163 tick0 = *((u64*)&sharedmem_section[0]);
372 0x00119f68 <+104>: ldr r2, [r3, #4]
373 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac
374 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c
375 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108
376 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c
377 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158
378
379164 tick1 = *((u64*)&sharedmem_section[2]);
380 0x00119f64 <+100>: ldrd r0, [r3, #8]
381 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4
382 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0
383 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110
384 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114
385 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164
386 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160
387
388165
389166 if(tick0==tick1 || tick0<0 || tick1<0)return 1;
390 0x00119f6c <+108>: ldr r9, [r3]
391 0x00119f70 <+112>: cmp r2, r1
392 0x00119f74 <+116>: cmpeq r9, r0
393 0x00119f78 <+120>: orr r2, r2, r1
394 0x00119f7c <+124>: moveq r1, #1
395 0x00119f80 <+128>: movne r1, #0
396 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31
397 0x00119f88 <+136>: moveq r1, #52 ; 0x34
398 0x00119f8c <+140>: moveq r2, #40 ; 0x28
399 0x00119f90 <+144>: bne 0x119fb0 <hidScanInput+176>
400 0x00119f94 <+148>: b 0x119fa0 <hidScanInput+160>
401 0x00119f98 <+152>: mov r1, #164 ; 0xa4
402 0x00119f9c <+156>: mov r2, #152 ; 0x98
403 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8
404 0x00119fd8 <+216>: cmp r1, r0
405 0x00119fdc <+220>: cmpeq r9, lr
406 0x00119fe0 <+224>: orr r1, r1, r0
407 0x00119fe4 <+228>: moveq r0, #1
408 0x00119fe8 <+232>: movne r0, #0
409 0x00119fec <+236>: orrs r0, r0, r1, lsr #31
410 0x00119ff0 <+240>: beq 0x11a134 <hidScanInput+564>
411 0x0011a094 <+404>: cmp r1, r12
412 0x0011a098 <+408>: cmpeq lr, r0
413 0x0011a09c <+412>: moveq r0, #1
414 0x0011a0a0 <+416>: movne r0, #0
415 0x0011a0a4 <+420>: orr r1, r1, r12
416 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31
417 0x0011a0ac <+428>: beq 0x11a114 <hidScanInput+532>
418 0x0011a0d8 <+472>: cmp r1, r0
419 0x0011a0dc <+476>: cmpeq lr, r12
420 0x0011a0e0 <+480>: orr r1, r1, r0
421 0x0011a0e4 <+484>: moveq r0, #1
422 0x0011a0e8 <+488>: movne r0, #0
423 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31
424 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc}
425
426167 }
427168
428169 return 0;
429170 }
430171
431172 void hidScanInput(void)
432173 {
433 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr}
434
435174 u32 Id=0;
436
437175
438176 kOld = kHeld;
439 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 <hidScanInput+624>
440 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 <hidScanInput+628>
441 0x00119f0c <+12>: ldr r3, [r4]
442 0x00119f14 <+20>: str r3, [r7]
443
444177 irrstScanInput();
445 0x00119f18 <+24>: bl 0x11a6c4 <irrstScanInput>
446
447178
448179 kHeld = 0;
449 0x00119f1c <+28>: mov r2, #0
450 0x00119f3c <+60>: str r2, [r4]
451
452180 memset(&cPos, 0, sizeof(circlePosition));
453 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 <hidScanInput+644>
454 0x00119f40 <+64>: str r2, [lr]
455
456181 memset(&tPos, 0, sizeof(touchPosition));
457 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 <hidScanInput+648>
458 0x00119f44 <+68>: str r2, [r12]
459
460182 memset(&aVec, 0, sizeof(accelVector));
461 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c <hidScanInput+636>
462 0x00119f48 <+72>: str r2, [r6]
463 0x00119f4c <+76>: strh r2, [r6, #4]
464
465183 memset(&gRate, 0, sizeof(angularRate));
466 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 <hidScanInput+640>
467 0x00119f50 <+80>: str r2, [r5]
468 0x00119f54 <+84>: strh r2, [r5, #4]
469
470184
471185 Id = hidSharedMem[4];//PAD / circle-pad
472 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 <hidScanInput+632>
473 0x00119f20 <+32>: ldr r3, [r8]
474=> 0x00119f28 <+40>: ldr r1, [r3, #16]
475
476186 if(Id>7)Id=7;
477 0x00119f38 <+56>: cmp r1, #7
478 0x00119f58 <+88>: bhi 0x119f98 <hidScanInput+152>
479
480187 if(hidCheckSectionUpdateTime(hidSharedMem, Id)==0)
481
482188 {
483189 kHeld = hidSharedMem[10 + Id*4];
484 0x00119fa0 <+160>: ldr r2, [r3, r2]
485 0x00119fa8 <+168>: str r2, [r4]
486 0x0011a160 <+608>: lsl r1, r1, #4
487 0x0011a164 <+612>: add r2, r1, #40 ; 0x28
488
489190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3];
490 0x00119fa4 <+164>: ldr r0, [r3, r1]
491 0x00119fac <+172>: str r0, [lr]
492 0x0011a168 <+616>: add r1, r1, #52 ; 0x34
493 0x0011a16c <+620>: b 0x119fa0 <hidScanInput+160>
494 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26
495 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26
496 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp
497 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26
498 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp
499 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp
500 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp
501 0x0011a18c <+652>: adcseq r0, r9, r12
502 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26
503 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp
504 0x0011a198 <+664>: adcseq r0, r9, r8
505 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26
506 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0
507
508191 }
509192
510193 Id = hidSharedMem[42 + 4];//Touch-screen
511 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8
512
513194 if(Id>7)Id=7;
514 0x00119fb4 <+180>: cmp r1, #7
515 0x00119fb8 <+184>: movcc r2, r1
516 0x00119fbc <+188>: movcs r2, #7
517
518195 if(hidCheckSectionUpdateTime(&hidSharedMem[42], Id)==0)
519
520196 {
521197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2];
522 0x0011a134 <+564>: add r2, r2, #25
523 0x0011a138 <+568>: lsl r1, r2, #3
524 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3]
525 0x0011a150 <+592>: str r0, [r12]
526
527198 if (hidSharedMem[42 + 8 + Id*2 + 1])
528 0x0011a13c <+572>: add r1, r1, #4
529 0x0011a140 <+576>: ldr r1, [r3, r1]
530 0x0011a148 <+584>: cmp r1, #0
531
532199 kHeld |= KEY_TOUCH;
533 0x0011a14c <+588>: ldrne r3, [r4]
534 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000
535 0x0011a158 <+600>: strne r3, [r4]
536 0x0011a15c <+604>: b 0x119ff4 <hidScanInput+244>
537
538200 }
539201
540202 kHeld |= irrstKeysHeld();
541 0x00119ff4 <+244>: bl 0x11a778 <irrstKeysHeld>
542 0x00119ff8 <+248>: ldr r1, [r4]
543 0x0011a004 <+260>: orr r0, r0, r1
544 0x0011a024 <+292>: str r0, [r4]
545
546203
547204 kDown = (~kOld) & kHeld;
548 0x0011a000 <+256>: ldr r2, [r7]
549 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 <hidScanInput+656>
550 0x0011a014 <+276>: bic r1, r0, r2
551 0x0011a018 <+280>: str r1, [lr]
552
553205 kUp = kOld & (~kHeld);
554 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 <hidScanInput+660>
555 0x0011a020 <+288>: bic lr, r2, r0
556 0x0011a028 <+296>: str lr, [r12]
557
558206
559207 if (kDelay)
560 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c <hidScanInput+652>
561 0x0011a00c <+268>: ldr r3, [r3]
562 0x0011a01c <+284>: cmp r3, #0
563 0x0011a02c <+300>: beq 0x11a068 <hidScanInput+360>
564
565208 {
566209 if (kHeld != kOld)
567 0x0011a030 <+304>: cmp r0, r2
568
569210 {
570211 kCount = kDelay;
571
572212 kRepeat = kDown;
573 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c <hidScanInput+668>
574 0x0011a040 <+320>: strne r1, [r2]
575
576213 }
577214
578215 if (--kCount == 0)
579 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 <hidScanInput+664>
580 0x0011a03c <+316>: ldreq r3, [r2]
581 0x0011a044 <+324>: sub r3, r3, #1
582 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 <hidScanInput+664>
583 0x0011a04c <+332>: cmp r3, #0
584 0x0011a050 <+336>: str r3, [r2]
585
586216 {
587217 kCount = kInterval;
588 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 <hidScanInput+672>
589 0x0011a058 <+344>: ldreq r3, [r3]
590 0x0011a05c <+348>: streq r3, [r2]
591
592218 kRepeat = kHeld;
593 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c <hidScanInput+668>
594 0x0011a064 <+356>: streq r0, [r3]
595
596219 }
597220 }
598221
599222 Id = hidSharedMem[66 + 4];//Accelerometer
600 0x0011a068 <+360>: ldr r3, [r8]
601 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118
602
603223 if(Id>7)Id=7;
604 0x0011a070 <+368>: cmp r1, #7
605 0x0011a074 <+372>: movcc r2, r1
606 0x0011a078 <+376>: movcs r2, #7
607
608224 if(hidCheckSectionUpdateTime(&hidSharedMem[66], Id)==0)
609
610225 {
611226 aVec = ((accelVector*)&hidSharedMem[66 + 8])[Id];
612 0x0011a114 <+532>: add r2, r2, r2, lsl #1
613 0x0011a118 <+536>: add r2, r3, r2, lsl #1
614 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128
615 0x0011a120 <+544>: add r1, r2, #296 ; 0x128
616 0x0011a124 <+548>: str r0, [r6]
617 0x0011a128 <+552>: ldrh r2, [r1, #4]
618 0x0011a12c <+556>: strh r2, [r6, #4]
619 0x0011a130 <+560>: b 0x11a0b0 <hidScanInput+432>
620
621227 }
622228
623229 Id = hidSharedMem[86 + 4];//Gyroscope
624 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168
625
626230 if(Id>31)Id=31;
627 0x0011a0b4 <+436>: cmp r1, #31
628 0x0011a0b8 <+440>: movcc r2, r1
629 0x0011a0bc <+444>: movcs r2, #31
630
631231 if(hidCheckSectionUpdateTime(&hidSharedMem[86], Id)==0)
632
633232 {
634233 gRate = ((angularRate*)&hidSharedMem[86 + 8])[Id];
635 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1
636 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1
637 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178
638 0x0011a100 <+512>: add r3, r3, #376 ; 0x178
639 0x0011a104 <+516>: str r0, [r5]
640 0x0011a108 <+520>: ldrh r3, [r3, #4]
641 0x0011a10c <+524>: strh r3, [r5, #4]
642
643234 }
644235 }
645 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc}
646
647(gdb) disassemble/s hidScanInput
648Dump of assembler code for function hidScanInput:
649/home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:
650176 kOld = kHeld;
651 0x00119f00 <+0>: push {r4, r5, r6, r7, r8, r9, r10, lr}
652 0x00119f04 <+4>: ldr r4, [pc, #612] ; 0x11a170 <hidScanInput+624>
653 0x00119f08 <+8>: ldr r7, [pc, #612] ; 0x11a174 <hidScanInput+628>
654 0x00119f0c <+12>: ldr r3, [r4]
655
656184
657185 Id = hidSharedMem[4];//PAD / circle-pad
658 0x00119f10 <+16>: ldr r8, [pc, #608] ; 0x11a178 <hidScanInput+632>
659
660176 kOld = kHeld;
661 0x00119f14 <+20>: str r3, [r7]
662
663177 irrstScanInput();
664 0x00119f18 <+24>: bl 0x11a6c4 <irrstScanInput>
665
666178
667179 kHeld = 0;
668 0x00119f1c <+28>: mov r2, #0
669
670184
671185 Id = hidSharedMem[4];//PAD / circle-pad
672 0x00119f20 <+32>: ldr r3, [r8]
673
674182 memset(&aVec, 0, sizeof(accelVector));
675 0x00119f24 <+36>: ldr r6, [pc, #592] ; 0x11a17c <hidScanInput+636>
676
677184
678185 Id = hidSharedMem[4];//PAD / circle-pad
679=> 0x00119f28 <+40>: ldr r1, [r3, #16]
680
681183 memset(&gRate, 0, sizeof(angularRate));
682 0x00119f2c <+44>: ldr r5, [pc, #588] ; 0x11a180 <hidScanInput+640>
683
684180 memset(&cPos, 0, sizeof(circlePosition));
685 0x00119f30 <+48>: ldr lr, [pc, #588] ; 0x11a184 <hidScanInput+644>
686
687181 memset(&tPos, 0, sizeof(touchPosition));
688 0x00119f34 <+52>: ldr r12, [pc, #588] ; 0x11a188 <hidScanInput+648>
689
690186 if(Id>7)Id=7;
691 0x00119f38 <+56>: cmp r1, #7
692
693179 kHeld = 0;
694 0x00119f3c <+60>: str r2, [r4]
695
696180 memset(&cPos, 0, sizeof(circlePosition));
697 0x00119f40 <+64>: str r2, [lr]
698
699181 memset(&tPos, 0, sizeof(touchPosition));
700 0x00119f44 <+68>: str r2, [r12]
701
702182 memset(&aVec, 0, sizeof(accelVector));
703 0x00119f48 <+72>: str r2, [r6]
704 0x00119f4c <+76>: strh r2, [r6, #4]
705
706183 memset(&gRate, 0, sizeof(angularRate));
707 0x00119f50 <+80>: str r2, [r5]
708 0x00119f54 <+84>: strh r2, [r5, #4]
709
710186 if(Id>7)Id=7;
711 0x00119f58 <+88>: bhi 0x119f98 <hidScanInput+152>
712
713161 if(id==0)
714 0x00119f5c <+92>: cmp r1, r2
715 0x00119f60 <+96>: bne 0x11a160 <hidScanInput+608>
716
717162 {
718163 tick0 = *((u64*)&sharedmem_section[0]);
719 0x00119f64 <+100>: ldrd r0, [r3, #8]
720
721165
722166 if(tick0==tick1 || tick0<0 || tick1<0)return 1;
723 0x00119f68 <+104>: ldr r2, [r3, #4]
724 0x00119f6c <+108>: ldr r9, [r3]
725 0x00119f70 <+112>: cmp r2, r1
726 0x00119f74 <+116>: cmpeq r9, r0
727 0x00119f78 <+120>: orr r2, r2, r1
728 0x00119f7c <+124>: moveq r1, #1
729 0x00119f80 <+128>: movne r1, #0
730 0x00119f84 <+132>: orrs r1, r1, r2, lsr #31
731 0x00119f88 <+136>: moveq r1, #52 ; 0x34
732 0x00119f8c <+140>: moveq r2, #40 ; 0x28
733 0x00119f90 <+144>: bne 0x119fb0 <hidScanInput+176>
734 0x00119f94 <+148>: b 0x119fa0 <hidScanInput+160>
735 0x00119f98 <+152>: mov r1, #164 ; 0xa4
736 0x00119f9c <+156>: mov r2, #152 ; 0x98
737
738187 if(hidCheckSectionUpdateTime(hidSharedMem, Id)==0)
739188 {
740189 kHeld = hidSharedMem[10 + Id*4];
741 0x00119fa0 <+160>: ldr r2, [r3, r2]
742
743190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3];
744 0x00119fa4 <+164>: ldr r0, [r3, r1]
745
746189 kHeld = hidSharedMem[10 + Id*4];
747 0x00119fa8 <+168>: str r2, [r4]
748
749190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3];
750 0x00119fac <+172>: str r0, [lr]
751
752191 }
753192
754193 Id = hidSharedMem[42 + 4];//Touch-screen
755 0x00119fb0 <+176>: ldr r1, [r3, #184] ; 0xb8
756
757194 if(Id>7)Id=7;
758 0x00119fb4 <+180>: cmp r1, #7
759 0x00119fb8 <+184>: movcc r2, r1
760 0x00119fbc <+188>: movcs r2, #7
761
762161 if(id==0)
763 0x00119fc0 <+192>: cmp r1, #0
764 0x00119fc4 <+196>: bne 0x11a134 <hidScanInput+564>
765
766162 {
767163 tick0 = *((u64*)&sharedmem_section[0]);
768 0x00119fc8 <+200>: ldr r0, [r3, #180] ; 0xb4
769 0x00119fcc <+204>: ldr r1, [r3, #172] ; 0xac
770
771164 tick1 = *((u64*)&sharedmem_section[2]);
772 0x00119fd0 <+208>: ldr lr, [r3, #176] ; 0xb0
773
774165
775166 if(tick0==tick1 || tick0<0 || tick1<0)return 1;
776 0x00119fd4 <+212>: ldr r9, [r3, #168] ; 0xa8
777 0x00119fd8 <+216>: cmp r1, r0
778 0x00119fdc <+220>: cmpeq r9, lr
779 0x00119fe0 <+224>: orr r1, r1, r0
780 0x00119fe4 <+228>: moveq r0, #1
781 0x00119fe8 <+232>: movne r0, #0
782 0x00119fec <+236>: orrs r0, r0, r1, lsr #31
783 0x00119ff0 <+240>: beq 0x11a134 <hidScanInput+564>
784
785200 }
786201
787202 kHeld |= irrstKeysHeld();
788 0x00119ff4 <+244>: bl 0x11a778 <irrstKeysHeld>
789 0x00119ff8 <+248>: ldr r1, [r4]
790
791206
792207 if (kDelay)
793 0x00119ffc <+252>: ldr r3, [pc, #392] ; 0x11a18c <hidScanInput+652>
794
795204 kDown = (~kOld) & kHeld;
796 0x0011a000 <+256>: ldr r2, [r7]
797
798202 kHeld |= irrstKeysHeld();
799 0x0011a004 <+260>: orr r0, r0, r1
800
801203
802204 kDown = (~kOld) & kHeld;
803 0x0011a008 <+264>: ldr lr, [pc, #384] ; 0x11a190 <hidScanInput+656>
804
805206
806207 if (kDelay)
807 0x0011a00c <+268>: ldr r3, [r3]
808
809205 kUp = kOld & (~kHeld);
810 0x0011a010 <+272>: ldr r12, [pc, #380] ; 0x11a194 <hidScanInput+660>
811
812204 kDown = (~kOld) & kHeld;
813 0x0011a014 <+276>: bic r1, r0, r2
814 0x0011a018 <+280>: str r1, [lr]
815
816206
817207 if (kDelay)
818 0x0011a01c <+284>: cmp r3, #0
819
820205 kUp = kOld & (~kHeld);
821 0x0011a020 <+288>: bic lr, r2, r0
822
823202 kHeld |= irrstKeysHeld();
824 0x0011a024 <+292>: str r0, [r4]
825
826205 kUp = kOld & (~kHeld);
827 0x0011a028 <+296>: str lr, [r12]
828
829206
830207 if (kDelay)
831 0x0011a02c <+300>: beq 0x11a068 <hidScanInput+360>
832
833208 {
834209 if (kHeld != kOld)
835 0x0011a030 <+304>: cmp r0, r2
836
837213 }
838214
839215 if (--kCount == 0)
840 0x0011a034 <+308>: ldreq r2, [pc, #348] ; 0x11a198 <hidScanInput+664>
841
842212 kRepeat = kDown;
843 0x0011a038 <+312>: ldrne r2, [pc, #348] ; 0x11a19c <hidScanInput+668>
844
845213 }
846214
847215 if (--kCount == 0)
848 0x0011a03c <+316>: ldreq r3, [r2]
849
850212 kRepeat = kDown;
851 0x0011a040 <+320>: strne r1, [r2]
852
853213 }
854214
855215 if (--kCount == 0)
856 0x0011a044 <+324>: sub r3, r3, #1
857 0x0011a048 <+328>: ldrne r2, [pc, #328] ; 0x11a198 <hidScanInput+664>
858 0x0011a04c <+332>: cmp r3, #0
859 0x0011a050 <+336>: str r3, [r2]
860
861216 {
862217 kCount = kInterval;
863 0x0011a054 <+340>: ldreq r3, [pc, #324] ; 0x11a1a0 <hidScanInput+672>
864 0x0011a058 <+344>: ldreq r3, [r3]
865 0x0011a05c <+348>: streq r3, [r2]
866
867218 kRepeat = kHeld;
868 0x0011a060 <+352>: ldreq r3, [pc, #308] ; 0x11a19c <hidScanInput+668>
869 0x0011a064 <+356>: streq r0, [r3]
870
871219 }
872220 }
873221
874222 Id = hidSharedMem[66 + 4];//Accelerometer
875 0x0011a068 <+360>: ldr r3, [r8]
876 0x0011a06c <+364>: ldr r1, [r3, #280] ; 0x118
877
878223 if(Id>7)Id=7;
879 0x0011a070 <+368>: cmp r1, #7
880 0x0011a074 <+372>: movcc r2, r1
881 0x0011a078 <+376>: movcs r2, #7
882
883161 if(id==0)
884 0x0011a07c <+380>: cmp r1, #0
885 0x0011a080 <+384>: bne 0x11a114 <hidScanInput+532>
886
887162 {
888163 tick0 = *((u64*)&sharedmem_section[0]);
889 0x0011a084 <+388>: ldr r0, [r3, #272] ; 0x110
890 0x0011a088 <+392>: ldr r1, [r3, #268] ; 0x10c
891
892164 tick1 = *((u64*)&sharedmem_section[2]);
893 0x0011a08c <+396>: ldr r12, [r3, #276] ; 0x114
894
895163 tick0 = *((u64*)&sharedmem_section[0]);
896 0x0011a090 <+400>: ldr lr, [r3, #264] ; 0x108
897
898165
899166 if(tick0==tick1 || tick0<0 || tick1<0)return 1;
900 0x0011a094 <+404>: cmp r1, r12
901 0x0011a098 <+408>: cmpeq lr, r0
902 0x0011a09c <+412>: moveq r0, #1
903 0x0011a0a0 <+416>: movne r0, #0
904 0x0011a0a4 <+420>: orr r1, r1, r12
905 0x0011a0a8 <+424>: orrs r0, r0, r1, lsr #31
906 0x0011a0ac <+428>: beq 0x11a114 <hidScanInput+532>
907
908227 }
909228
910229 Id = hidSharedMem[86 + 4];//Gyroscope
911 0x0011a0b0 <+432>: ldr r1, [r3, #360] ; 0x168
912
913230 if(Id>31)Id=31;
914 0x0011a0b4 <+436>: cmp r1, #31
915 0x0011a0b8 <+440>: movcc r2, r1
916 0x0011a0bc <+444>: movcs r2, #31
917
918161 if(id==0)
919 0x0011a0c0 <+448>: cmp r1, #0
920 0x0011a0c4 <+452>: bne 0x11a0f4 <hidScanInput+500>
921
922162 {
923163 tick0 = *((u64*)&sharedmem_section[0]);
924 0x0011a0c8 <+456>: ldr r0, [r3, #356] ; 0x164
925 0x0011a0cc <+460>: ldr r1, [r3, #348] ; 0x15c
926 0x0011a0d0 <+464>: ldr lr, [r3, #344] ; 0x158
927
928164 tick1 = *((u64*)&sharedmem_section[2]);
929 0x0011a0d4 <+468>: ldr r12, [r3, #352] ; 0x160
930
931165
932166 if(tick0==tick1 || tick0<0 || tick1<0)return 1;
933 0x0011a0d8 <+472>: cmp r1, r0
934 0x0011a0dc <+476>: cmpeq lr, r12
935 0x0011a0e0 <+480>: orr r1, r1, r0
936 0x0011a0e4 <+484>: moveq r0, #1
937 0x0011a0e8 <+488>: movne r0, #0
938 0x0011a0ec <+492>: orrs r0, r0, r1, lsr #31
939 0x0011a0f0 <+496>: popne {r4, r5, r6, r7, r8, r9, r10, pc}
940
941231 if(hidCheckSectionUpdateTime(&hidSharedMem[86], Id)==0)
942232 {
943233 gRate = ((angularRate*)&hidSharedMem[86 + 8])[Id];
944 0x0011a0f4 <+500>: add r2, r2, r2, lsl #1
945 0x0011a0f8 <+504>: add r3, r3, r2, lsl #1
946 0x0011a0fc <+508>: ldr r0, [r3, #376] ; 0x178
947 0x0011a100 <+512>: add r3, r3, #376 ; 0x178
948 0x0011a104 <+516>: str r0, [r5]
949 0x0011a108 <+520>: ldrh r3, [r3, #4]
950 0x0011a10c <+524>: strh r3, [r5, #4]
951
952234 }
953235 }
954 0x0011a110 <+528>: pop {r4, r5, r6, r7, r8, r9, r10, pc}
955
956226 aVec = ((accelVector*)&hidSharedMem[66 + 8])[Id];
957 0x0011a114 <+532>: add r2, r2, r2, lsl #1
958 0x0011a118 <+536>: add r2, r3, r2, lsl #1
959 0x0011a11c <+540>: ldr r0, [r2, #296] ; 0x128
960 0x0011a120 <+544>: add r1, r2, #296 ; 0x128
961 0x0011a124 <+548>: str r0, [r6]
962 0x0011a128 <+552>: ldrh r2, [r1, #4]
963 0x0011a12c <+556>: strh r2, [r6, #4]
964 0x0011a130 <+560>: b 0x11a0b0 <hidScanInput+432>
965
966197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2];
967 0x0011a134 <+564>: add r2, r2, #25
968 0x0011a138 <+568>: lsl r1, r2, #3
969
970198 if (hidSharedMem[42 + 8 + Id*2 + 1])
971 0x0011a13c <+572>: add r1, r1, #4
972 0x0011a140 <+576>: ldr r1, [r3, r1]
973
974197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2];
975 0x0011a144 <+580>: ldr r0, [r3, r2, lsl #3]
976
977198 if (hidSharedMem[42 + 8 + Id*2 + 1])
978 0x0011a148 <+584>: cmp r1, #0
979
980199 kHeld |= KEY_TOUCH;
981 0x0011a14c <+588>: ldrne r3, [r4]
982
983197 tPos = *(touchPosition*)&hidSharedMem[42 + 8 + Id*2];
984 0x0011a150 <+592>: str r0, [r12]
985
986199 kHeld |= KEY_TOUCH;
987 0x0011a154 <+596>: orrne r3, r3, #1048576 ; 0x100000
988 0x0011a158 <+600>: strne r3, [r4]
989 0x0011a15c <+604>: b 0x119ff4 <hidScanInput+244>
990
991189 kHeld = hidSharedMem[10 + Id*4];
992 0x0011a160 <+608>: lsl r1, r1, #4
993 0x0011a164 <+612>: add r2, r1, #40 ; 0x28
994
995190 cPos = *(circlePosition*)&hidSharedMem[10 + Id*4 + 3];
996 0x0011a168 <+616>: add r1, r1, #52 ; 0x34
997 0x0011a16c <+620>: b 0x119fa0 <hidScanInput+160>
998 0x0011a170 <+624>: adcseq r2, r10, r4, ror #26
999 0x0011a174 <+628>: adcseq r2, r10, r8, ror #26
1000 0x0011a178 <+632>: adcseq r2, r10, r12, asr sp
1001 0x0011a17c <+636>: adcseq r2, r10, r8, lsr #26
1002 0x0011a180 <+640>: adcseq r2, r10, r4, lsr sp
1003 0x0011a184 <+644>: adcseq r2, r10, r0, lsr sp
1004 0x0011a188 <+648>: adcseq r2, r10, r4, ror sp
1005 0x0011a18c <+652>: adcseq r0, r9, r12
1006 0x0011a190 <+656>: adcseq r2, r10, r0, ror #26
1007 0x0011a194 <+660>: adcseq r2, r10, r0, ror sp
1008 0x0011a198 <+664>: adcseq r0, r9, r8
1009 0x0011a19c <+668>: adcseq r2, r10, r12, ror #26
1010 0x0011a1a0 <+672>: adcseq r0, r9, r0, lsl r0
1011End of assembler dump.
1012
1013(gdb) info frame function hidScanInput
1014Stack frame at 0x81492d0:
1015 pc = 0x119f28 in hidScanInput (/home/atrus/Documents/repos/libctru-2.0.1/libctru/source/services/hid.c:185); saved pc = 0x16914c
1016 called by frame at 0x8149350
1017 source language c.
1018 Arglist at 0x81492b0, args:
1019 Locals at 0x81492b0, Previous frame's sp is 0x81492d0
1020 Saved registers:
1021 r4 at 0x81492b0, r5 at 0x81492b4, r6 at 0x81492b8, r7 at 0x81492bc, r8 at 0x81492c0, r9 at 0x81492c4, r10 at 0x81492c8, lr at 0x81492cc
1022
1023(gdb) x/8x $sp
10240x81492b0: 0x0802f098 0x00000000 0x0802fb3c 0xfffffff9
10250x81492c0: 0xfffffff9 0x00000000 0x00000001 0x0016914c
1026(gdb) disconnect
1027Ending remote debugging.
1028(gdb)