summaryrefslogtreecommitdiffstats
path: root/libgloss/nds32/syscall_error_handler.S
diff options
context:
space:
mode:
Diffstat (limited to 'libgloss/nds32/syscall_error_handler.S')
-rw-r--r--libgloss/nds32/syscall_error_handler.S5
1 files changed, 3 insertions, 2 deletions
diff --git a/libgloss/nds32/syscall_error_handler.S b/libgloss/nds32/syscall_error_handler.S
index dbb5f6856..9398c5171 100644
--- a/libgloss/nds32/syscall_error_handler.S
+++ b/libgloss/nds32/syscall_error_handler.S
@@ -31,7 +31,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "syscall_extra.h"
- .extern errno
+ .extern _impure_ptr /* The first element is _errno. */
.text
.global __syscall_error_handler
.type __syscall_error_handler, @function
@@ -41,7 +41,8 @@ __syscall_error_handler:
addi $r1, $r0, 1
bnez $r1, 1f /* Branch if success. */
syscall SYS_geterr /* There is something wrong. */
- s.w $r0, errno /* Store error code into errno. */
+ l.w $r15, _impure_ptr
+ swi $r0, [$r15] /* Set errno. */
move $r0, -1
1:
ret