Skip to contentSkip to conversation

adjust the alignment in struct sal_processor_static_info

PATCH New Hidetoshi Seto 1 participant 1 message Aug 5, 2004

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 adjust the alignment in struct sal_processor_static_info

Hi all,

Struct ia64_fpreg(asm-ia64/fpu.h) is forced to align 16-byte. An array of this struct is in struct sal_processor_static_info (asm-ia64/sal.h), however, we can't touch the array correctly because of the forced alignment.

Usually, SAL log record contains:
Record Header
- sizeof(sal_log_record_header_t) = 40
Section Header
- sizeof(sal_log_sec_hdr_t) = 24
Section Body(Processor Error Section)
- sizeof(before mod_error_info) = 32
- sizeof(sal_log_mod_error_info_t) = 48
- sizeof(sal_cpuid_info) = 48
- sizeof(sal_log_mod_error_info_t) = 48
- sizeof(sal_processor_static_info_t) = 5256
(offset of struct ia64_fpreg fr[0]
in sal_processor_static_info_t) = 3208

So, the total offset of fr[0] from beginning of the record is:

    40 + 24 + 32 + 48*n + 48 + 3208

This number can't be divided by 16. fr[0] never fit to the 16-byte boundary because of the remainder.

This trivial patch will fix this issue.

Thanks,

H.Seto

include/asm-ia64/sal.h +1 -1
diff -Nur linux-2.6.8-rc3/include/asm-ia64/sal.h linux-2.6.8-rc3-sal/include/asm-ia64/sal.h
@@ -364,7 +364,7 @@
 	u64 cr[128];
 	u64 ar[128];
 	u64 rr[8];
-	struct ia64_fpreg fr[128];
+	struct ia64_fpreg __attribute__ ((packed)) fr[128];
 } sal_processor_static_info_t;
 
 struct sal_cpuid_info {