summaryrefslogtreecommitdiff
path: root/core/nds32/abort.S
diff options
context:
space:
mode:
Diffstat (limited to 'core/nds32/abort.S')
-rw-r--r--core/nds32/abort.S26
1 files changed, 26 insertions, 0 deletions
diff --git a/core/nds32/abort.S b/core/nds32/abort.S
new file mode 100644
index 0000000000..d7474812af
--- /dev/null
+++ b/core/nds32/abort.S
@@ -0,0 +1,26 @@
+/* Copyright 2018 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * abort() handler
+ */
+
+#include "config.h"
+#define PSW_INTL_SHIFT 1 /* Interrupt Stack Level */
+#define PSW_INTL_MASK (0x3 << PSW_INTL_SHIFT)
+
+.text
+
+.global abort
+abort:
+ movi55 $r6, 3 // assert
+ movi55 $r7, 0 // no info. doubles for the equality test below
+
+ // in interrupt context -> $r5 != 0
+ mfsr $r5, $PSW
+ andi $r5, $r5, PSW_INTL_MASK
+
+ beq $r5, $r7, .L1
+ j excep_handler
+.L1:
+ break 0