MFC r226452 (by marcel@)

  Define dtrace_cmpset_long in terms of atomic_cmpset_long
  and not by virtue of inline assembly. Now this file
  compiles on all supported architectures.
MFC r244631
  Correct a series of errors in the hand-rolled locking for drace_debug.c:

  - Use spinlock_enter()/spinlock_exit() to prevent a thread holding a
    debug lock from being preempted to prevent other threads waiting
    on that lock from starvation.

  - Handle the possibility of CPU migration in between the fetch of curcpu
    and the call to spinlock_enter() by saving curcpu in a local variable.

  - Use memory barriers to prevent reordering of loads and stores of the
    data protected by the lock outside of the critical section

  - Eliminate false sharing of the locks by moving them into the structures
    that they protect and aligning them to a cacheline boundary.

  - Record the owning thread in the lock to make debugging future problems
    easier.

  Reviewed by:  rpaulo (initial version)