2005-10-28 20:53:37 +08:00
|
|
|
/*
|
|
|
|
* Copyright (C) 1996 Paul Mackerras.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU General Public License
|
|
|
|
* as published by the Free Software Foundation; either version
|
|
|
|
* 2 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* NOTE: assert(sizeof(buf) > 23 * sizeof(long))
|
|
|
|
*/
|
|
|
|
#include <asm/processor.h>
|
|
|
|
#include <asm/ppc_asm.h>
|
|
|
|
#include <asm/asm-offsets.h>
|
2010-11-18 23:06:17 +08:00
|
|
|
#include <asm/ptrace.h>
|
2005-10-28 20:53:37 +08:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Grab the register values as they are now.
|
2011-03-31 09:57:33 +08:00
|
|
|
* This won't do a particularly good job because we really
|
2005-10-28 20:53:37 +08:00
|
|
|
* want our caller's caller's registers, and our caller has
|
|
|
|
* already executed its prologue.
|
|
|
|
* ToDo: We could reach back into the caller's save area to do
|
|
|
|
* a better job of representing the caller's state (note that
|
|
|
|
* that will be different for 32-bit and 64-bit, because of the
|
|
|
|
* different ABIs, though).
|
|
|
|
*/
|
2008-12-17 18:08:55 +08:00
|
|
|
_GLOBAL(ppc_save_regs)
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,0*SZL(r3)
|
|
|
|
PPC_STL r2,2*SZL(r3)
|
|
|
|
PPC_STL r3,3*SZL(r3)
|
|
|
|
PPC_STL r4,4*SZL(r3)
|
|
|
|
PPC_STL r5,5*SZL(r3)
|
|
|
|
PPC_STL r6,6*SZL(r3)
|
|
|
|
PPC_STL r7,7*SZL(r3)
|
|
|
|
PPC_STL r8,8*SZL(r3)
|
|
|
|
PPC_STL r9,9*SZL(r3)
|
|
|
|
PPC_STL r10,10*SZL(r3)
|
|
|
|
PPC_STL r11,11*SZL(r3)
|
|
|
|
PPC_STL r12,12*SZL(r3)
|
|
|
|
PPC_STL r13,13*SZL(r3)
|
|
|
|
PPC_STL r14,14*SZL(r3)
|
|
|
|
PPC_STL r15,15*SZL(r3)
|
|
|
|
PPC_STL r16,16*SZL(r3)
|
|
|
|
PPC_STL r17,17*SZL(r3)
|
|
|
|
PPC_STL r18,18*SZL(r3)
|
|
|
|
PPC_STL r19,19*SZL(r3)
|
|
|
|
PPC_STL r20,20*SZL(r3)
|
|
|
|
PPC_STL r21,21*SZL(r3)
|
|
|
|
PPC_STL r22,22*SZL(r3)
|
|
|
|
PPC_STL r23,23*SZL(r3)
|
|
|
|
PPC_STL r24,24*SZL(r3)
|
|
|
|
PPC_STL r25,25*SZL(r3)
|
|
|
|
PPC_STL r26,26*SZL(r3)
|
|
|
|
PPC_STL r27,27*SZL(r3)
|
|
|
|
PPC_STL r28,28*SZL(r3)
|
|
|
|
PPC_STL r29,29*SZL(r3)
|
|
|
|
PPC_STL r30,30*SZL(r3)
|
|
|
|
PPC_STL r31,31*SZL(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
/* go up one stack frame for SP */
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_LL r4,0(r1)
|
|
|
|
PPC_STL r4,1*SZL(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
/* get caller's LR */
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_LL r0,LRSAVE(r4)
|
|
|
|
PPC_STL r0,_NIP-STACK_FRAME_OVERHEAD(r3)
|
|
|
|
PPC_STL r0,_LINK-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
mfmsr r0
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,_MSR-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
mfctr r0
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,_CTR-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
mfxer r0
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,_XER-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
mfcr r0
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,_CCR-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
li r0,0
|
[PATCH] powerpc: Consolidate asm compatibility macros
This patch consolidates macros used to generate assembly for
compatibility across different CPUs or configs. A new header,
asm-powerpc/asm-compat.h contains the main compatibility macros. It
uses some preprocessor magic to make the macros suitable both for use
in .S files, and in inline asm in .c files. Headers (bitops.h,
uaccess.h, atomic.h, bug.h) which had their own such compatibility
macros are changed to use asm-compat.h.
ppc_asm.h is now for use in .S files *only*, and a #error enforces
that. As such, we're a lot more careless about namespace pollution
here than in asm-compat.h.
While we're at it, this patch adds a call to the PPC405_ERR77 macro in
futex.h which should have had it already, but didn't.
Built and booted on pSeries, Maple and iSeries (ARCH=powerpc). Built
for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
Signed-off-by: David Gibson <dwg@au1.ibm.com>
Signed-off-by: Paul Mackerras <paulus@samba.org>
2005-11-10 09:56:55 +08:00
|
|
|
PPC_STL r0,_TRAP-STACK_FRAME_OVERHEAD(r3)
|
2005-10-28 20:53:37 +08:00
|
|
|
blr
|