This isn't going to work with -fstrict-aliasing, but I guess openbios has that disabled anyway?
I don't think it breaks strict aliasing rules. A cell is defined as a 32bit integer on 32bit architectures and this code will only be compiled on ppc32. I just wrote it as a uint32_t for clarity.
It breaks aliasing rules if whatever reads the data you write does not read it as a type compatible with the type you wrote it as. If everything reads it as a 32-bit int, a cell, or a character type, it is fine; if not, not.
Don't worry about it too much, I'm sure there are hundreds of other places in openbios that do icky things like this. It's in the nature of emulators/ interpreters :-)
Segher