diff --git a/stm32f3-discovery/Makefile b/stm32f3-discovery/Makefile
index 277ef06..2f8d1e1 100755
--- a/stm32f3-discovery/Makefile
+++ b/stm32f3-discovery/Makefile
@@ -32,6 +32,7 @@ CFLAGS += -mlittle-endian -mcpu=cortex-m4  -march=armv7e-m -mthumb
 CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
 CFLAGS += -ffunction-sections -fdata-sections
 CFLAGS += -Wl,--gc-sections -Wl,-Map=$(PROJ_NAME).map
+CFLAGS += -Wl,--defsym,jhc_physicalAddress=0
 
 ###################################################
 
diff --git a/stm32f3-discovery/hs_src/Main.hs b/stm32f3-discovery/hs_src/Main.hs
index 1b4e5ac..201f64a 100644
--- a/stm32f3-discovery/hs_src/Main.hs
+++ b/stm32f3-discovery/hs_src/Main.hs
@@ -5,6 +5,7 @@ import Foreign.Ptr
 import Foreign.Storable
 
 foreign import ccall "c_extern.h Delay" c_delay :: Word32 -> IO ()
+foreign import ccall "&jhc_physicalAddress" jhcPhysicalAddress16 :: Ptr Word16
 
 gpioPin8, gpioPin9, gpioPin10, gpioPin11, gpioPin12, gpioPin13, gpioPin14, gpioPin15, led3, led4, led5, led6, led7, led8, led9, led10 :: Word16
 gpioPin8  = 0x0100
@@ -25,8 +26,8 @@ led9  = gpioPin12
 led10 = gpioPin13
 
 brrPtr, bsrrPtr :: Ptr Word16
-brrPtr  = nullPtr `plusPtr` 0x48001028
-bsrrPtr = nullPtr `plusPtr` 0x48001018
+brrPtr  = jhcPhysicalAddress16 `plusPtr` 0x48001028
+bsrrPtr = jhcPhysicalAddress16 `plusPtr` 0x48001018
 
 ledOff, ledOn :: Word16 -> IO ()
 ledOff = poke brrPtr
diff --git a/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h b/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h
index 2ea1646..fdba514 100644
--- a/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h
+++ b/stm32f3-discovery/jhc_custom/rts/jhc_rts_header.h
@@ -65,3 +65,5 @@ extern const void * const nh_stuff[];
 #include "rts/gc.h"
 #include "rts/jhc_rts.h"
 #include "lib/lib_cbits.h"
+
+extern volatile void jhc_physicalAddress;
