diff --git a/examples/resource.rs b/examples/resource.rs
index 3fced4cffa2d676b2460d00f17ad2fd3a52282e0..ad91efb4575102bc5a708641919cc4db997fb0e5 100644
--- a/examples/resource.rs
+++ b/examples/resource.rs
@@ -2,6 +2,7 @@
 //#![deny(unsafe_code)]
 // IMPORTANT always include this feature gate
 #![feature(proc_macro)]
+#![feature(used)]
 #![no_std]
 
 extern crate cortex_m_rtfm as rtfm;
@@ -56,6 +57,7 @@ fn exti1(t: &mut Threshold, EXTI1::Resources { X, mut Y }: EXTI1::Resources) {
             }
         });
     });
+    rtfm::bkpt();
 }
 
 fn exti2(t: &mut Threshold, mut r: EXTI2::Resources) {
@@ -74,14 +76,54 @@ fn exti3(_t: &mut Threshold, _r: EXTI3::Resources) {}
 #[allow(dead_code)]
 fn init(_p: init::Peripherals, _r: init::Resources) {}
 
+extern crate cortex_m;
+use cortex_m::register::basepri;
+
+// for wcet should be autogenerated...
+#[inline(never)]
+fn readbasepri() -> u8 {
+    cortex_m::register::basepri::read()
+}
+
 // The idle loop.
 //
 // This runs after `init` and has a priority of 0. All tasks can preempt this
 // function. This function can never return so it must contain some sort of
 // endless loop.
+#[inline(never)]
+#[allow(non_snake_case)]
+#[no_mangle]
+fn stub_EXTI1() {
+    unsafe { _EXTI1() };
+}
+#[inline(never)]
+#[no_mangle]
+#[allow(non_snake_case)]
+fn stub_EXTI2() {
+    unsafe { _EXTI2() };
+}
+#[inline(never)]
+#[no_mangle]
+#[allow(non_snake_case)]
+fn stub_EXTI3() {
+    unsafe {
+        _EXTI3();
+    }
+}
 
 #[inline(never)]
-#[allow(dead_code)]
 fn idle() -> ! {
-    loop {}
+    readbasepri();
+    stub_EXTI1();
+    stub_EXTI1();
+    stub_EXTI1();
+
+    loop {
+        rtfm::nop();
+    }
 }
+
+//
+//0x80001dc        0x80001dc <cortex_m_rt::reset_handler+4>
+//0x8000270        0x8000270 <resource::init>
+//0x8000284        0x8000284 <resource::idle+10>