diff --git a/debuggerd/Android.mk b/debuggerd/Android.mk
index ccc001b..a0c90e7 100644
--- a/debuggerd/Android.mk
+++ b/debuggerd/Android.mk
@@ -30,7 +30,17 @@ LOCAL_MODULE_TAGS := eng
 LOCAL_SHARED_LIBRARIES := libcutils libc
 include $(BUILD_EXECUTABLE)
 
-ifeq ($(ARCH_ARM_HAVE_VFP),true)
+ifeq ($(TARGET_ARCH_VARIANT),armv6k) # If ARCH_ARM_6K == true
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := vfp-crasher.c vfp-v2.S
+LOCAL_MODULE := vfp-crasher
+LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
+LOCAL_MODULE_TAGS := eng
+LOCAL_SHARED_LIBRARIES := libcutils libc
+include $(BUILD_EXECUTABLE)
+
+else ifeq ($(ARCH_ARM_HAVE_VFP),true) # Else if ARCH_ARM_HAVE_VFP (implies ARMv7)
 include $(CLEAR_VARS)
 
 LOCAL_CFLAGS += -DWITH_VFP
diff --git a/debuggerd/vfp-v2.S b/debuggerd/vfp-v2.S
new file mode 100644
index 0000000..7db439f
--- /dev/null
+++ b/debuggerd/vfp-v2.S
@@ -0,0 +1,52 @@
+    .text
+    .align 2
+    .global crash
+    .type crash, %function
+
+    @ Will create 16 double floating point numbers that are generated
+    @ by
+    @       fconstd d0, #imm
+    @
+    @ instruction as used by vfp.S, and store it to the 16 double fp
+    @ registers. The top part is the one that changes, while the bottom
+    @ part remains zero.
+
+crash:
+    mov     r0,#0x40000000  @ Creating the top part of the double floating point constant
+    mov     r1,#0x0         @ Creating the bottom part of the double fp constant
+    fmdrr   d0, r1, r0      @ Storing to d0 the 0x40000000:00000000 fp number (2.00000000  in decimal)
+
+    add     r0, #0x00010000 @ Creating the top part of the next fp number in sequence by adding 0x10000
+    fmdrr   d1, r1, r0      @ Storing to d1 the 0x40010000:00000000 fp number (2.12500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d2, r1, r0      @ Storing to d2 the 0x40020000:00000000 fp number (2.25000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d3, r1, r0      @ Storing to d3 the 0x40030000:00000000 fp number (2.37500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d4, r1, r0      @ Storing to d4 the 0x40040000:00000000 fp number (2.50000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d5, r1, r0      @ Storing to d5 the 0x40050000:00000000 fp number (2.62500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d6, r1, r0      @ Storing to d6 the 0x40060000:00000000 fp number (2.75000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d7, r1, r0      @ Storing to d7 the 0x40070000:00000000 fp number (2.87500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d8, r1, r0      @ Storing to d8 the 0x40080000:00000000 fp number (2.00000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d9, r1, r0      @ Storing to d9 the 0x40090000:00000000 fp number (3.12500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d10, r1, r0     @ Storing to d10 the 0x400a0000:00000000 fp number (3.25000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d11, r1, r0     @ Storing to d11 the 0x400b0000:00000000 fp number (3.37500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d12, r1, r0     @ Storing to d12 the 0x400c0000:00000000 fp number (3.50000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d13, r1, r0     @ Storing to d13 the 0x400d0000:00000000 fp number (3.62500000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d14, r1, r0     @ Storing to d14 the 0x400e0000:00000000 fp number (3.75000000 in decimal)
+    add     r0, #0x00010000
+    fmdrr   d15, r1, r0     @ Storing to d15 the 0x400f0000:00000000 fp number (3.87500000 in decimal)
+
+    mov       r0, #0
+    str       r0, [r0]
+    bx        lr
