/* * SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note * * Bootinfo tags from linux bootinfo.h and bootinfo-mac.h: * This is an easily parsable and extendable structure containing all * information to be passed from the bootstrap to the kernel * * This structure is copied right after the kernel by the bootstrap * routine. */ #ifndef HW_M68K_BOOTINFO_H #define HW_M68K_BOOTINFO_H #define BOOTINFO0(base, id) \ do { \ stw_p(base, id); \ base += 2; \ stw_p(base, sizeof(struct bi_record)); \ base += 2; \ } while (0) #define BOOTINFO1(base, id, value) \ do { \ stw_p(base, id); \ base += 2; \ stw_p(base, sizeof(struct bi_record) + 4); \ base += 2; \ stl_p(base, value); \ base += 4; \ } while (0) #define BOOTINFO2(base, id, value1, value2) \ do { \ stw_p(base, id); \ base += 2; \ stw_p(base, sizeof(struct bi_record) + 8); \ base += 2; \ stl_p(base, value1); \ base += 4; \ stl_p(base, value2); \ base += 4; \ } while (0) #define BOOTINFOSTR(base, id, string) \ do { \ stw_p(base, id); \ base += 2; \ stw_p(base, \ (sizeof(struct bi_record) + strlen(string) + \ 1 /* null termination */ + 3 /* padding */) & ~3); \ base += 2; \ for (unsigned i_ = 0; string[i_]; i_++) { \ stb_p(base++, string[i_]); \ } \ stb_p(base++, 0); \ base = QEMU_ALIGN_PTR_UP(base, 4); \ } while (0) #define BOOTINFODATA(base, id, data, len) \ do { \ stw_p(base, id); \ base += 2; \ stw_p(base, \ (sizeof(struct bi_record) + len + \ 2 /* length field */ + 3 /* padding */) & ~3); \ base += 2; \ stw_p(base, len); \ base += 2; \ for (unsigned i_ = 0; i_ < len; ++i_) { \ stb_p(base++, data[i_]); \ } \ base = QEMU_ALIGN_PTR_UP(base, 4); \ } while (0) #endif