[SCSI] hpsa: Clarify calculation of padding for commandlist structure
authorStephen M. Cameron <scameron@beardog.cce.hp.com>
Thu, 25 Feb 2010 20:03:22 +0000 (14:03 -0600)
committerJames Bottomley <James.Bottomley@suse.de>
Wed, 3 Mar 2010 13:07:08 +0000 (18:37 +0530)
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/hpsa_cmd.h

index 3e0abdf7668921005fd42bc58a26b2cc083a75ca..43b6f1cffe34cc6856e33e578a65d8f188f5e48e 100644 (file)
@@ -313,12 +313,18 @@ struct CommandList {
        void   *scsi_cmd;
 
 /* on 64 bit architectures, to get this to be 32-byte-aligned
- * it so happens we need no padding, on 32 bit systems,
- * we need 8 bytes of padding.   This does that.
+ * it so happens we need PAD_64 bytes of padding, on 32 bit systems,
+ * we need PAD_32 bytes of padding (see below).   This does that.
+ * If it happens that 64 bit and 32 bit systems need different
+ * padding, PAD_32 and PAD_64 can be set independently, and.
+ * the code below will do the right thing.
  */
-#define COMMANDLIST_PAD ((8 - sizeof(long))/4 * 8)
+#define IS_32_BIT ((8 - sizeof(long))/4)
+#define IS_64_BIT (!IS_32_BIT)
+#define PAD_32 (8)
+#define PAD_64 (0)
+#define COMMANDLIST_PAD (IS_32_BIT * PAD_32 + IS_64_BIT * PAD_64)
        u8 pad[COMMANDLIST_PAD];
-
 };
 
 /* Configuration Table Structure */