#define OFFSETOF(s, i) ((unsigned int)&((s *)0)->i)
#define SKIP_BACK(s, i, p) ((s *)((char *)p - OFFSETOF(s, i)))
#define ALIGN(s, a) (((s)+a-1)&~(a-1))
-#define ALIGN_PTR(p, s) ( (s)>1 ? ((typeof(p)) ((addr_int_t)(p) + (s) - (addr_int_t)(p) % (s))) : (p) )
+#define ALIGN_PTR(p, s) ((addr_int_t)(p) % (s) ? (typeof(p))((addr_int_t)(p) + (s) - (addr_int_t)(p) % (s)) : (p))
#define UNALIGNED_PART(ptr, type) (((long) (ptr)) % sizeof(type))
/* Some other macros */