So I have the MMU and Dcache enabled (C-bit=1, M-bit=1, and L2EN=0) and I have the page tables set up for writeback and full-access (AP=11b, TEX=000b, C=1, B=1, bits[1:0]=10b). If I do a read (to load a cacheline into L1 Dcache), then do a single word store to the same cacheline, I expect the L1 Dcache to hold valid and dirty data. If I then disable the C-bit, and read the location, I expect to read the value from SDRAM which should be the old data. This is not what I get. In all cases (with or without the L2 enabled), the L1 (and the L2) act like they're in writethrough and the stores always make their way to SDRAM.
I believe it's true that I have to have the MMU enable to use the L1 Dcache (although the TRM is not clearly stating that). I'm wondering if it's true that the page table C and B bits are actually the bits which tell the cache to operate as writethrough or writeback, or if there's some other cfg bits I haven't yet discovered. These are the relevant pages upon which I'm basing my assertions: