aboutsummaryrefslogtreecommitdiff
path: root/cortex-m-semihosting/src/nr.rs
diff options
context:
space:
mode:
authorGravatar bors[bot] <26634292+bors[bot]@users.noreply.github.com> 2020-10-13 23:32:15 +0000
committerGravatar GitHub <noreply@github.com> 2020-10-13 23:32:15 +0000
commit432e5f527430394570d1d07454e26cc41d5b2936 (patch)
treed3cde25a18eabfc5f0342dbf2d31ab767f21bab9 /cortex-m-semihosting/src/nr.rs
parentf77d64a2d1505335e4a170d03a40993bb066fd02 (diff)
parentb51178fae6373d8dae95f2fb661e0635359e8bc0 (diff)
downloadcortex-m-432e5f527430394570d1d07454e26cc41d5b2936.tar.gz
cortex-m-432e5f527430394570d1d07454e26cc41d5b2936.tar.zst
cortex-m-432e5f527430394570d1d07454e26cc41d5b2936.zip
263: Import cortex-m-semihosting and panic-semihosting into this repo r=adamgreig a=jonas-schievink Motivation: * Allows writing QEMU tests for `cortex-m`'s functionality that use semihosting to control QEMU. Previously these crates would pull in another cortex-m version, which doesn't work. Now they have a `path` dependency on the root crate. * Lets us share the outline-inline-assembly setup and `cargo-xtask` in general. * Lets us share CI and bot setup between more crates. * 2 fewer repos to triage and keep track of (I'll transfer their issues after this is merged). I also want to import cortex-m-rt, but I'll do that in a later PR. CI was updated to build-test all crates with all or most feature combinations, like it did before. Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
Diffstat (limited to 'cortex-m-semihosting/src/nr.rs')
-rw-r--r--cortex-m-semihosting/src/nr.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/cortex-m-semihosting/src/nr.rs b/cortex-m-semihosting/src/nr.rs
new file mode 100644
index 0000000..5d206de
--- /dev/null
+++ b/cortex-m-semihosting/src/nr.rs
@@ -0,0 +1,57 @@
+//! Semihosting operations
+
+// TODO document
+#![allow(missing_docs)]
+
+pub const CLOCK: usize = 0x10;
+pub const CLOSE: usize = 0x02;
+pub const ELAPSED: usize = 0x30;
+pub const ERRNO: usize = 0x13;
+pub const FLEN: usize = 0x0c;
+pub const GET_CMDLINE: usize = 0x15;
+pub const HEAPINFO: usize = 0x16;
+pub const ISERROR: usize = 0x08;
+pub const ISTTY: usize = 0x09;
+pub const OPEN: usize = 0x01;
+pub const READ: usize = 0x06;
+pub const READC: usize = 0x07;
+pub const REMOVE: usize = 0x0e;
+pub const RENAME: usize = 0x0f;
+pub const SEEK: usize = 0x0a;
+pub const SYSTEM: usize = 0x12;
+pub const TICKFREQ: usize = 0x31;
+pub const TIME: usize = 0x11;
+pub const TMPNAM: usize = 0x0d;
+pub const WRITE0: usize = 0x04;
+pub const WRITE: usize = 0x05;
+pub const WRITEC: usize = 0x03;
+pub const ENTER_SVC: usize = 0x17;
+pub const REPORT_EXCEPTION: usize = 0x18;
+
+/// Values for the mode parameter of the OPEN syscall.
+pub mod open {
+ /// Mode corresponding to fopen "r" mode.
+ pub const R: usize = 0;
+ /// Mode corresponding to fopen "rb" mode.
+ pub const R_BINARY: usize = 1;
+ /// Mode corresponding to fopen "r+" mode.
+ pub const RW: usize = 2;
+ /// Mode corresponding to fopen "r+b" mode.
+ pub const RW_BINARY: usize = 3;
+ /// Mode corresponding to fopen "w" mode.
+ pub const W_TRUNC: usize = 4;
+ /// Mode corresponding to fopen "wb" mode.
+ pub const W_TRUNC_BINARY: usize = 5;
+ /// Mode corresponding to fopen "w+" mode.
+ pub const RW_TRUNC: usize = 6;
+ /// Mode corresponding to fopen "w+b" mode.
+ pub const RW_TRUNC_BINARY: usize = 7;
+ /// Mode corresponding to fopen "a" mode.
+ pub const W_APPEND: usize = 8;
+ /// Mode corresponding to fopen "ab" mode.
+ pub const W_APPEND_BINARY: usize = 9;
+ /// Mode corresponding to fopen "a+" mode.
+ pub const RW_APPEND: usize = 10;
+ /// Mode corresponding to fopen "a+b" mode.
+ pub const RW_APPEND_BINARY: usize = 11;
+}