m68k: align bootinfo strings and data to 4 bytes
Various tools, such as kexec-tools and m68k-bootinfo, expect each bootinfo entry to be aligned to 4 bytes, not 2 bytes. So adjust the padding to fill this out as such. Also, break apart the padding additions from the other field length additions, so that it's more clear why these magic numbers are being added, and comment them too. Reported-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20220926113900.1256630-2-Jason@zx2c4.com> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
		
							parent
							
								
									b342e56b23
								
							
						
					
					
						commit
						2cfa963126
					
				@ -48,13 +48,14 @@
 | 
				
			|||||||
        stw_phys(as, base, id); \
 | 
					        stw_phys(as, base, id); \
 | 
				
			||||||
        base += 2; \
 | 
					        base += 2; \
 | 
				
			||||||
        stw_phys(as, base, \
 | 
					        stw_phys(as, base, \
 | 
				
			||||||
                 (sizeof(struct bi_record) + strlen(string) + 2) & ~1); \
 | 
					                 (sizeof(struct bi_record) + strlen(string) + \
 | 
				
			||||||
 | 
					                  1 /* null termination */ + 3 /* padding */) & ~3); \
 | 
				
			||||||
        base += 2; \
 | 
					        base += 2; \
 | 
				
			||||||
        for (i = 0; string[i]; i++) { \
 | 
					        for (i = 0; string[i]; i++) { \
 | 
				
			||||||
            stb_phys(as, base++, string[i]); \
 | 
					            stb_phys(as, base++, string[i]); \
 | 
				
			||||||
        } \
 | 
					        } \
 | 
				
			||||||
        stb_phys(as, base++, 0); \
 | 
					        stb_phys(as, base++, 0); \
 | 
				
			||||||
        base = (base + 1) & ~1; \
 | 
					        base = (base + 3) & ~3; \
 | 
				
			||||||
    } while (0)
 | 
					    } while (0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define BOOTINFODATA(as, base, id, data, len) \
 | 
					#define BOOTINFODATA(as, base, id, data, len) \
 | 
				
			||||||
@ -63,13 +64,14 @@
 | 
				
			|||||||
        stw_phys(as, base, id); \
 | 
					        stw_phys(as, base, id); \
 | 
				
			||||||
        base += 2; \
 | 
					        base += 2; \
 | 
				
			||||||
        stw_phys(as, base, \
 | 
					        stw_phys(as, base, \
 | 
				
			||||||
                 (sizeof(struct bi_record) + len + 3) & ~1); \
 | 
					                 (sizeof(struct bi_record) + len + \
 | 
				
			||||||
 | 
					                  2 /* length field */ + 3 /* padding */) & ~3); \
 | 
				
			||||||
        base += 2; \
 | 
					        base += 2; \
 | 
				
			||||||
        stw_phys(as, base, len); \
 | 
					        stw_phys(as, base, len); \
 | 
				
			||||||
        base += 2; \
 | 
					        base += 2; \
 | 
				
			||||||
        for (i = 0; i < len; ++i) { \
 | 
					        for (i = 0; i < len; ++i) { \
 | 
				
			||||||
            stb_phys(as, base++, data[i]); \
 | 
					            stb_phys(as, base++, data[i]); \
 | 
				
			||||||
        } \
 | 
					        } \
 | 
				
			||||||
        base = (base + 1) & ~1; \
 | 
					        base = (base + 3) & ~3; \
 | 
				
			||||||
    } while (0)
 | 
					    } while (0)
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user