https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84166
--- Comment #1 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- It's not confused. It's saying that it's type-safe to convert "uint32_t **" to "volatile uint32_t *const *", but not to convert it to "volatile uint32_t *". http://c-faq.com/ansi/constmismatch.html