RWSEM implementation for ARM using atomic functions which is heavily based on arch/sh/include/asm/rwsem.h