The e000001c4 address is a virtual address which will be translated by the mmu to some physical address (setup by the ioremap() call).
You seem to be relying on the Altera mutex implementation matching what your linux driver does - there is no reason to suppore they match.
Somewhere you'll have to have two matching copies of Dekker's algorithm - you might as well write your own.
You might want to initialise some field of your mutex structure to a known conatant value - just to verify that both sides are actually referencing teh same memory locations.
Also ensure that both sides are using cache-disabled instructions/mappings.