It worked!! Chris, you just made my day :D
Do you happen to know, can I rely on that function to only invalidate the exact bytes of ram that I specify as the start and end? I can't always know whether my data will be perfectly aligned to a "cache block", and I wouldn't want anything funny happening to any of the bytes either-side which might be in the same "cache block".
It appears to be working as I expect though.