In this post, koitsu wrote:
The short of it is that ca65/ld65 has no comprehension of direct page, only zero page, which can cause complications if using tcd (a fairly commonly used opcode on 65816). Maybe this doesn't matter with cc65, since it itself is handling declaration and organisation of variables.
He cited his previous posts about the issue (#140305 and #140698) as well.
A few issues related to support for nonzero direct page base have been filed against cc65 and ca65: #194, #317, and #498. See also mailing list discussion. It's important not only for 65816 but also for the HuC6280 in the TurboGrafx-16, which fixes D at $2000. Until these are fixed, what workarounds have been used if needed? How often do games use D != $0000?