Unaligned memory

I recently upgraded to CUDA 2.0, and now when I compile my old programs I get:

“Error: Unaligned memory accesses not supported”.

What is causing this, and how can I fix it? (is there an __align macro?)

This is the offending piece of code:

struct rc4_state {

	u_char	perm[256];

	u_char	index1;

	u_char	index2;

};

... *snip* ...

outbuf[i] = inbuf[i] ^ state->perm[j];

Answered my own question, yes:
struct align(16) rc4_state

Now I guess my second question is what does this do?
Does it just align the start of the struct, or every entry in the struct? (Can I align certain parts of the struct again, seperately?)