diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-10-29 12:42:53 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-10-29 12:42:53 +0000 |
commit | fd4acd9253cf716ce2ee9a5004294fbfa45eacf9 (patch) | |
tree | ad86752ef723885c5281f2800c78364a00b95e83 /gcc/libgcc2.c | |
parent | 9a4dceee3e95ee9e6e51b500fa70ce8cd24f7a1b (diff) | |
download | ppe42-gcc-fd4acd9253cf716ce2ee9a5004294fbfa45eacf9.tar.gz ppe42-gcc-fd4acd9253cf716ce2ee9a5004294fbfa45eacf9.zip |
(L_eh: __unwind_function): Implement for VAX.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10539 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/libgcc2.c')
-rw-r--r-- | gcc/libgcc2.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index d266a4a9226..4656597e06f 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -2390,6 +2390,22 @@ __unwind_function(void *ptr) asm("# br"); asm("mtctr 3;bctr # b 3"); } +#elif #machine(vax) +__unwind_function(void *ptr) +{ + __label__ return_again; + + /* Replace our frame's return address with the label below. + During execution, we will first return here instead of to + caller, then second return takes caller's frame off the stack. + Two returns matches two actual calls, so is less likely to + confuse debuggers. `16' corresponds to RETURN_ADDRESS_OFFSET. */ + __asm ("movl %0,16(fp)" : : "p" (&& return_again)); + return; + + return_again: + return; +} #else __unwind_function(void *ptr) { |