Yet another quicksort
I think instead of writing the macro MISC_XCHG and using only once, I would just write the swap directly in place.
The use of upper-case for the single-letter locals is unconventional, and looks odd.
I haven't measured performance, but it seems that sorting already-ordered (or nearly-ordered) input is likely to suffer as a consequence of always picking the first element as pivot.  A popular strategy is to pick the median of the first, last and central elements.  It doesn't matter that these are not necessarily distinct when we get to the very smallest partitions.
I do like the code that chooses the smaller partition for the recursive step, and uses iteration on the larger partition.
I don't understand why L is a uintptr_t - I would have thought size_t the obvious choice, the same as standard qsort().
The cast of cmp from  bool(*)(t const*, t const*) to (bool(*)(void const*, void const*) leads to Undefined Behaviour when it's called as the wrong type.  The correct way to provide a type-specific comparator is to convert the arguments:
#define DEFINE_QSORT_COMPARATOR(s,t,cmp) \
  static bool qsort_compare_##s(void const *a, void const *b) \
  { t const *x = a; t const *y = b; return cmp(*x, *y); }