]> git.saurik.com Git - apple/libc.git/blobdiff - ppc/sys/cerror.s
Libc-339.tar.gz
[apple/libc.git] / ppc / sys / cerror.s
index 21ed0185f6cdaadac76aee250c600e3eb6a4310b..47d7dad76edde3ef8cc344a91cfba1d413151c09 100644 (file)
@@ -3,6 +3,8 @@
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
+ * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
+ * 
  * This file contains Original Code and/or Modifications of Original Code
  * as defined in and that are subject to the Apple Public Source License
  * Version 2.0 (the 'License'). You may not use this file except in
 /* Copyright (c) 1992 NeXT Computer, Inc.  All rights reserved.
  */
 
-#import        <architecture/ppc/asm_help.h>
-#import        <architecture/ppc/pseudo_inst.h>
+/* We use mode-independent "g" opcodes such as "srgi", and/or
+ * mode-independent macros such as MI_GET_ADDRESS.  These expand
+ * into word operations when targeting __ppc__, and into doubleword
+ * operations when targeting __ppc64__.
+ */
+#include <architecture/ppc/mode_independent_asm.h>
 
-       .globl  _errno
+    .globl  _errno
 
-NESTED(cerror, 0, 1, 0, 0)
-       REG_TO_EXTERN(r3,_errno)
-       CALL_EXTERN(_cthread_set_errno_self)
-       li32    r3,-1
-       li32    r4,-1   /* in case a 64-bit value is returned */
-       RETURN
-END(cerror)
+MI_ENTRY_POINT(cerror)
+    MI_PUSH_STACK_FRAME
+    MI_GET_ADDRESS(r12,_errno)
+    stw     r3,0(r12)               /* save syscall return code in global */
+    MI_CALL_EXTERNAL(_cthread_set_errno_self)
+    li      r3,-1                   /* then bug return value */
+    li      r4,-1                   /* in case we're returning a long-long in 32-bit mode, etc */
+    MI_POP_STACK_FRAME_AND_RETURN