rizin/librz/debug/p/native/reg/windows-arm.h
GustavoLCR 53a7694631
Add support for Windows on ARM (#1502)
* Support building for Windows on ARM

* Fix usage of reserved function name on ARM
* Fix architecture dependent `CONTEXT` fields access

* Fixes for debugging on Windows on ARM

* Fix breakpoint behavior on windows on ARM
* Fix register profile when debugging
* Remove `drx` error message if not supported
* Add support for hardware breakpoints
* Disable support for hardware single-stepping

* Fix Windows Message breakpoints on ARM

* Fix software single-stepping on return instruction on ARM

* Consider link register as destination for return instructions

* Fix setting debug bits to 16

* Rename `r12` to `ip` for windows arm register profile

* Remove debug bits hardcoding on windows

* Add 32bit registers to Windows ARM64 register profile

* Fix software step breakpoint alignment when entering thumb mode

* Define `RZ_TEST_ARCH` for `arm` and `arm64`

* Use `StackWalk64` API for backtracing on Windows

* Fix software single-stepping ARM in thumb mode

* Sync `asm.bits` with debugger

* Cleanup windows_debug.c

* Add SPDX for cross-arm64-windows.txt

* Add floating point control register flags

* Fix Windows Arm register profile alignment

* Keep `drx` warning
2021-11-24 20:13:42 +08:00

78 lines
2.7 KiB
C

// SPDX-FileCopyrightText: 2020 GustavoLCR <gugulcr@gmail.com>
// SPDX-License-Identifier: LGPL-3.0-only
return strdup(
"=PC pc\n"
"=SP sp\n"
"=BP fp\n"
"=LR lr\n"
"=A0 r0\n"
"=A1 r1\n"
"=A2 r2\n"
"=A3 r3\n"
"=ZF zf\n"
"=SF nf\n"
"=OF vf\n"
"=CF cf\n"
"gpr r0 .32 4 0\n"
"gpr r1 .32 8 0\n"
"gpr r2 .32 12 0\n"
"gpr r3 .32 16 0\n"
"gpr r4 .32 20 0\n"
"gpr r5 .32 24 0\n"
"gpr r6 .32 28 0\n"
"gpr r7 .32 32 0\n"
"gpr r8 .32 36 0\n"
"gpr r9 .32 40 0\n"
"gpr r10 .32 44 0\n"
"gpr r11 .32 48 0\n"
"gpr ip .32 52 0\n"
"gpr sp .32 56 0\n"
"gpr lr .32 60 0\n"
"gpr pc .32 64 0\n"
"flg cpsr .32 68 0 _____tfiae_____________j__qvczn\n"
"flg vf .1 68.28 0 overflow\n"
"flg cf .1 68.29 0 carry\n"
"flg zf .1 68.30 0 zero\n"
"flg nf .1 68.31 0 sign\n"
"flg fpscr .32 72 0\n"
"flg fvf .1 72.28 0 overflow\n"
"flg fcf .1 72.29 0 carry\n"
"flg fzf .1 72.30 0 zero\n"
"flg fnf .1 72.31 0 sign\n"
"fpu q0 .128 80 0\n"
"fpu q1 .128 96 0\n"
"fpu q2 .128 112 0\n"
"fpu q3 .128 128 0\n"
"fpu q4 .128 144 0\n"
"fpu q5 .128 160 0\n"
"fpu q6 .128 176 0\n"
"fpu q7 .128 192 0\n"
"fpu q8 .128 208 0\n"
"fpu q9 .128 224 0\n"
"fpu q10 .128 240 0\n"
"fpu q11 .128 256 0\n"
"fpu q12 .128 272 0\n"
"fpu q13 .128 288 0\n"
"fpu q14 .128 304 0\n"
"fpu q15 .128 320 0\n"
"drx bcr0 .32 336 0\n"
"drx bcr1 .32 340 0\n"
"drx bcr2 .32 344 0\n"
"drx bcr3 .32 348 0\n"
"drx bcr4 .32 352 0\n"
"drx bcr5 .32 356 0\n"
"drx bcr6 .32 360 0\n"
"drx bcr7 .32 364 0\n"
"drx bvr0 .32 368 0\n"
"drx bvr1 .32 372 0\n"
"drx bvr2 .32 376 0\n"
"drx bvr3 .32 380 0\n"
"drx bvr4 .32 384 0\n"
"drx bvr5 .32 388 0\n"
"drx bvr6 .32 392 0\n"
"drx bvr7 .32 396 0\n"
"drx wcr0 .32 400 0\n"
"drx wcr1 .32 404 0\n"
"drx wvr0 .32 408 0\n"
"drx wvr1 .32 412 0\n");