ARMv6-M is Thumb only. However, the ARM1176JZF-S is an implementation of ARMv6 with the Security Extensions - not - ARMv6-M. I know this can be somewhat confusing. Basically ARMv6-M and ARMv7-M are the versions of the architecture of used by the Cortex-M microcontrollers.For the record, the ARM1176JZF-S does NOT support Thumb-2. It supports ARM and Thumb (or Thumb-1 if that's clearer).My Linux experience is admittedly limited, but I'd recommend use the kernel calls. It will help make your code more portable, and is why they're provided in the first place.