Do nothing but yielding in error handlers (saves roughly 1150 bytes)
diff --git a/src/alloc.rs b/src/alloc.rs
index 523cb64..bcc5d6e 100644
--- a/src/alloc.rs
+++ b/src/alloc.rs
@@ -1,14 +1,8 @@
-use crate::drivers;
-use crate::leds::LedsDriver;
-use crate::result::TockResult;
-use crate::timer::Duration;
-use crate::timer::ParallelSleepDriver;
+use crate::syscalls;
 use core::alloc::GlobalAlloc;
 use core::alloc::Layout;
-use core::executor;
 use core::ptr;
 use core::ptr::NonNull;
-use futures::future;
 use linked_list_allocator::Heap;
 
 pub static mut HEAP: Heap = Heap::empty();
@@ -32,31 +26,7 @@
 
 #[alloc_error_handler]
 unsafe fn alloc_error_handler(_: Layout) -> ! {
-    executor::block_on(async {
-        let mut drivers = drivers::retrieve_drivers_unsafe();
-
-        let leds_driver = drivers.leds.init_driver();
-        let mut timer_driver = drivers.timer.create_timer_driver();
-        let timer_driver = timer_driver.activate();
-
-        if let (Ok(leds_driver), Ok(timer_driver)) = (leds_driver, timer_driver) {
-            let _ = cycle_all_leds(&leds_driver, &timer_driver).await;
-        } else {
-            future::pending::<()>().await
-        }
-        loop {}
-    })
-}
-
-async fn cycle_all_leds(
-    leds_driver: &LedsDriver<'_>,
-    timer_driver: &ParallelSleepDriver<'_>,
-) -> TockResult<()> {
     loop {
-        for led in leds_driver.leds() {
-            led.on()?;
-            timer_driver.sleep(Duration::from_ms(100)).await?;
-            led.off()?;
-        }
+        syscalls::raw::yieldk();
     }
 }
diff --git a/src/lang_items.rs b/src/lang_items.rs
index 91a20a1..5a28186 100644
--- a/src/lang_items.rs
+++ b/src/lang_items.rs
@@ -18,14 +18,9 @@
 //! `rustc_main`. That's covered by the `_start` function in the root of this
 //! crate.
 
-use crate::drivers;
-use crate::leds::LedsDriver;
 use crate::result::TockResult;
-use crate::timer::Duration;
-use crate::timer::ParallelSleepDriver;
-use core::executor;
+use crate::syscalls;
 use core::panic::PanicInfo;
-use futures::future;
 
 #[lang = "start"]
 extern "C" fn start<T>(main: fn() -> T, _argc: isize, _argv: *const *const u8) -> bool
@@ -62,35 +57,7 @@
     // Signal a panic using the LowLevelDebug capsule (if available).
     super::debug::low_level_status_code(1);
 
-    // Flash all LEDs (if available).
-    executor::block_on(async {
-        let mut drivers = drivers::retrieve_drivers_unsafe();
-
-        let leds_driver = drivers.leds.init_driver();
-        let mut timer_driver = drivers.timer.create_timer_driver();
-        let timer_driver = timer_driver.activate();
-
-        if let (Ok(leds_driver), Ok(timer_driver)) = (leds_driver, timer_driver) {
-            let _ = blink_all_leds(&leds_driver, &timer_driver).await;
-        } else {
-            future::pending::<()>().await
-        }
-        loop {}
-    })
-}
-
-async fn blink_all_leds(
-    leds_driver: &LedsDriver<'_>,
-    timer_driver: &ParallelSleepDriver<'_>,
-) -> TockResult<()> {
     loop {
-        for led in leds_driver.leds() {
-            led.on()?;
-        }
-        timer_driver.sleep(Duration::from_ms(100)).await?;
-        for led in leds_driver.leds() {
-            led.off()?;
-        }
-        timer_driver.sleep(Duration::from_ms(100)).await?;
+        syscalls::raw::yieldk();
     }
 }