Good to here that you're makin' progress
But there are two (three) more things.
You're writing to 0x1000.0628 which is the "Port Polarity" register, the actual "Port Data" register got the offset of 0x20.
The "port polarity" register is, as the name implies
, only for changing the polarity.
Means: With the pp-register set to zero your gpio is driven to a logical one if you've written a logical 1 to the pin's corresponding data bit in the "data register".
If you now set the "port polarity bit" for this gpio to 1 it drives a logical zero - the polarity is reversed.
Best thing would be to read the two textboxes regarding the "pin polarity" and "port data" in the PDF file again.
Second thing:
If you're only setting or resetting one single pin better use the GPIO_SET, GPIO_RESET or GPIO_TOGGLE register (see PDF too).
This ensures you don't affect other bits you didn't want to change.
Writing a 0x08 to the memory address will indeed set the third bit BUT will clear the other bits of the port.
Third:
This is more formal but you never can be sure how software behaves...
mmio writes and reads Bytes.
So preferably give him a whole byte when writing.
0x08 instead of 0x8, for example.
This impilies the reading/writing of whole bytes - filling hex numbers to the length of 2/4/8/... is best practice I'd say