[ros-diffs] [arty] 30105: Do this properly now that I understand exception chaining a bit better. The exception chain on x86 is at fs:0. We use r13 to simulate the same, so we chain exceptions at 0(13)

arty at svn.reactos.org arty at svn.reactos.org
Sun Nov 4 12:57:37 CET 2007


Author: arty
Date: Sun Nov  4 14:57:37 2007
New Revision: 30105

URL: http://svn.reactos.org/svn/reactos?rev=30105&view=rev
Log:
Do this properly now that I understand exception chaining a bit better.
The exception chain on x86 is at fs:0.  We use r13 to simulate the same, so
we chain exceptions at 0(13)

Modified:
    trunk/reactos/lib/pseh/powerpc/framebased.S

Modified: trunk/reactos/lib/pseh/powerpc/framebased.S
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/pseh/powerpc/framebased.S?rev=30105&r1=30104&r2=30105&view=diff
==============================================================================
--- trunk/reactos/lib/pseh/powerpc/framebased.S (original)
+++ trunk/reactos/lib/pseh/powerpc/framebased.S Sun Nov  4 14:57:37 2007
@@ -20,41 +20,28 @@
 
 .text
 
-__readfsdword:
-        add 7,13,3
-        lwz 3,0(7)
-        blr
-
-__writefsdword:
-        add 7,13,3
-        stw 3,0(7)
-        blr
-        
 .globl _SEHCleanHandlerEnvironment
 _SEHCleanHandlerEnvironment:
         blr
 
 .globl _SEHCurrentRegistration
 _SEHCurrentRegistration:
-        xor 3,0,0
-        bl __readfsdword
+        lwz 3,0(13)
         blr
 
+        // R3:  Frame to store in
 .globl _SEHRegisterFrame
 _SEHRegisterFrame:
-        xor 3,0,0
-        bl __readfsdword        # Get [fs:0]
-        lwz 4,0(1)              # Get next stack frame into r4
-        stw 3,0(1)              # put [fs:0] into old stack pos
-        xor 3,0,0
-        bl __writefsdword       # put old stack frame into [fs:0] completing
-        blr                     # the chain and return
+        lwz 4,0(13)
+        stw 3,0(13)
+        stw 4,0(3)
+        blr
 
 .globl _SEHUnregisterFrame
 _SEHUnregisterFrame:
-        xor 3,0,0
-        bl __readfsdword        # Get old next frame ptr
-        stw 3,0(1)              # Reset old stack frame
+        lwz 3,0(13)
+        lwz 3,0(3)
+        stw 3,0(13)
         blr
 
 .globl _SEHGlobalUnwind




More information about the Ros-diffs mailing list