diff --git a/panic_semihosting/src/Cargo.toml b/panic_semihosting/src/Cargo.toml
new file mode 100644
index 0000000000000000000000000000000000000000..ad47a05ef98b641ee13145f1b879980ac8bad2c3
--- /dev/null
+++ b/panic_semihosting/src/Cargo.toml
@@ -0,0 +1,29 @@
+
+[package]
+name = "nucleo"
+version = "0.2.1"
+authors = ["per lindgren"]
+description = "panic over semihosting"
+keywords = ["arm", "cortex-m", "panic"]
+categories = ["embedded", "no-std"]
+license = "MIT OR Apache-2.0"
+repository = "not defined"
+
+[dependencies.cortex-m-semihosting]
+version = "0.2.0"
+
+#[dependencies.cortex-m-rt]
+#version = "0.3.5"
+#features = ["abort-on-panic"]
+
+#[dependencies.cortex-m]
+#version = "0.3.0"
+
+
+[profile.dev]
+lto = true
+debug = true
+
+[profile.release]
+lto = true
+debug = true
diff --git a/panic_semihosting/src/lib.rs b/panic_semihosting/src/lib.rs
new file mode 100644
index 0000000000000000000000000000000000000000..bfa5db2de90354f23b1a771db1887efe6836c486
--- /dev/null
+++ b/panic_semihosting/src/lib.rs
@@ -0,0 +1,12 @@
+
+#[lang = "panic_fmt"]
+unsafe extern "C" fn panic_fmt(
+    _: ::core::fmt::Arguments,
+    _: &'static str,
+    _: u32,
+    _: u32,
+) -> ! {
+    hprint!("panicked at '");
+    ::cortex_m_semihosting::io::write_fmt(_args);
+    hprintln!("', {}:{}", _file, _line);
+}