rizin/librz/debug/p/native/linux/reg/linux-s390x.h
Riccardo Schirone dd38e70964
Add some SPDX headers (#1469)
* Add copyright and license to all librz/include/*.h files in dep5

* SPDX headers for most include files except bin/arch/debug

* Add SPDX headers in asm/arch/{8051,arm}

* Add SPDX header for shlr/gdb include files

* Add SPDX header for shlr/bochs include files

* Add SPDX header for librz/reg

* Add SPDX header for librz/debug/p/native/xnu

* Add SPDX header for librz/debug/p/native/windows

* Add SPDX header for librz/debug/p/native/reg include files

* Add SPDX header for librz/debug/p/native/maps include files

* Add SPDX header for librz/debug/p/native/linux include files
2021-08-17 18:27:03 +02:00

126 lines
4 KiB
C

// SPDX-FileCopyrightText: 2020 pancake <pancake@nopcode.org>
// SPDX-License-Identifier: LGPL-3.0-only
#if 0
https://www.kernel.org/doc/Documentation/s390/Debugging390.txt
s/390 & z/Architecture Register usage
=====================================
r0 used by syscalls/assembly call-clobbered
r1 used by syscalls/assembly call-clobbered
r2 argument 0 / return value 0 call-clobbered
r3 argument 1 / return value 1 (if long long) call-clobbered
r4 argument 2 call-clobbered
r5 argument 3 call-clobbered
r6 argument 4 saved
r7 pointer-to arguments 5 to ... saved
r8 this & that saved
r9 this & that saved
r10 static-chain ( if nested function ) saved
r11 frame-pointer ( if function used alloca ) saved
r12 got-pointer saved
r13 base-pointer saved
r14 return-address saved
r15 stack-pointer saved
$pc
$sp
f0 argument 0 / return value ( float/double ) call-clobbered
f2 argument 1 call-clobbered
f4 z/Architecture argument 2 saved
f6 z/Architecture argument 3 saved
The remaining floating points
f1,f3,f5 f7-f15 are call-clobbered.
The current architectures have the following registers.
16 General propose registers, 32 bit on s/390 and 64 bit on z/Architecture,
r0-r15 (or gpr0-gpr15), used for arithmetic and addressing.
16 Control registers, 32 bit on s/390 and 64 bit on z/Architecture, cr0-cr15,
kernel usage only, used for memory management, interrupt control, debugging
control etc.
16 Access registers (ar0-ar15), 32 bit on both s/390 and z/Architecture,
normally not used by normal programs but potentially could be used as
temporary storage. These registers have a 1:1 association with general
purpose registers and are designed to be used in the so-called access
register mode to select different address spaces.
Access register 0 (and access register 1 on z/Architecture, which needs a
64 bit pointer) is currently used by the pthread library as a pointer to
the current running threads private area.
16 64 bit floating point registers (fp0-fp15 ) IEEE & HFP floating
point format compliant on G5 upwards & a Floating point control reg (FPC)
4 64 bit registers (fp0,fp2,fp4 & fp6) HFP only on older machines.
Note:
Linux (currently) always uses IEEE & emulates G5 IEEE format on older machines,
( provided the kernel is configured for this ).
#endif
return strdup(
"=PC pc\n"
"=LR r14\n"
"=SP r15\n"
"=BP r13\n"
"=R0 r2\n"
"=A0 r2\n"
"=A1 r3\n"
"=A2 r4\n"
"=A3 r5\n"
"=SN r0\n"
"gpr r0 .32 0 0\n"
"gpr r1 .32 4 0\n"
"gpr r2 .32 8 0\n"
"gpr r3 .32 12 0\n"
"gpr r4 .32 16 0\n"
"gpr r5 .32 20 0\n"
"gpr r6 .32 24 0\n"
"gpr r7 .32 28 0\n"
"gpr r8 .32 32 0\n"
"gpr r9 .32 36 0\n"
"gpr r10 .32 40 0\n"
"gpr r11 .32 44 0\n"
"gpr r12 .32 48 0\n"
"gpr r13 .32 52 0\n"
"gpr r14 .32 56 0\n"
"gpr r15 .32 60 0\n"
"gpr pc .32 64 0\n"
// kernel only
"gpr cr0 .32 68 0\n"
"gpr cr1 .32 72 0\n"
"gpr cr2 .32 76 0\n"
"gpr cr3 .32 80 0\n"
"gpr cr4 .32 84 0\n"
"gpr cr5 .32 88 0\n"
"gpr cr6 .32 92 0\n"
"gpr cr7 .32 96 0\n"
"gpr cr8 .32 100 0\n"
"gpr cr9 .32 104 0\n"
"gpr cr10 .32 108 0\n"
"gpr cr11 .32 112 0\n"
"gpr cr12 .32 116 0\n"
"gpr cr13 .32 120 0\n"
"gpr cr14 .32 124 0\n"
"gpr cr15 .32 128 0\n"
// used for tls cache, used for threading
"gpr ar0 .32 132 0\n"
"gpr ar1 .32 136 0\n"
"gpr ar2 .32 140 0\n"
"gpr ar3 .32 144 0\n"
"gpr ar4 .32 148 0\n"
"gpr ar5 .32 152 0\n"
"gpr ar6 .32 156 0\n"
"gpr ar7 .32 160 0\n"
"gpr ar8 .32 164 0\n"
"gpr ar9 .32 170 0\n"
"gpr ar10 .32 174 0\n"
"gpr ar11 .32 178 0\n"
"gpr ar12 .32 182 0\n"
"gpr ar13 .32 186 0\n"
"gpr ar14 .32 190 0\n"
"gpr ar15 .32 194 0\n"
);