Lines Matching +full:step +full:- +full:size
1 // SPDX-License-Identifier: GPL-2.0+
43 dest->magic = be32_to_cpu(src->magic); in swap_header()
44 dest->version = be32_to_cpu(src->version); in swap_header()
45 dest->rom_size = be32_to_cpu(src->rom_size); in swap_header()
46 dest->boot_block_size = be32_to_cpu(src->boot_block_size); in swap_header()
47 dest->align = be32_to_cpu(src->align); in swap_header()
48 dest->offset = be32_to_cpu(src->offset); in swap_header()
55 memcpy(&dest->magic, &src->magic, sizeof(dest->magic)); in swap_file_header()
56 dest->len = be32_to_cpu(src->len); in swap_file_header()
57 dest->type = be32_to_cpu(src->type); in swap_file_header()
58 dest->checksum = be32_to_cpu(src->checksum); in swap_file_header()
59 dest->offset = be32_to_cpu(src->offset); in swap_file_header()
63 * Given a starting position in memory, scan forward, bounded by a size, and
68 * @param size The size of the memory region to search.
76 static int file_cbfs_next_file(u8 *start, u32 size, u32 align, in file_cbfs_next_file() argument
83 while (size >= align) { in file_cbfs_next_file()
87 u32 step; in file_cbfs_next_file() local
90 if (memcmp(good_file_magic, &(fileHeader->magic), in file_cbfs_next_file()
91 sizeof(fileHeader->magic))) { in file_cbfs_next_file()
93 size -= align; in file_cbfs_next_file()
101 return -1; in file_cbfs_next_file()
103 newNode->next = NULL; in file_cbfs_next_file()
104 newNode->type = header.type; in file_cbfs_next_file()
105 newNode->data = start + header.offset; in file_cbfs_next_file()
106 newNode->data_length = header.len; in file_cbfs_next_file()
107 name_len = header.offset - sizeof(struct cbfs_fileheader); in file_cbfs_next_file()
108 newNode->name = (char *)fileHeader + in file_cbfs_next_file()
110 newNode->name_length = name_len; in file_cbfs_next_file()
111 newNode->checksum = header.checksum; in file_cbfs_next_file()
113 step = header.len; in file_cbfs_next_file()
114 if (step % align) in file_cbfs_next_file()
115 step = step + align - step % align; in file_cbfs_next_file()
117 *used += step; in file_cbfs_next_file()
124 static void file_cbfs_fill_cache(u8 *start, u32 size, u32 align) in file_cbfs_fill_cache() argument
134 cache_node = cache_node->next; in file_cbfs_fill_cache()
139 while (size >= align) { in file_cbfs_fill_cache()
145 result = file_cbfs_next_file(start, size, align, in file_cbfs_fill_cache()
156 cache_tail = &newNode->next; in file_cbfs_fill_cache()
158 size -= used; in file_cbfs_fill_cache()
169 int32_t offset = *(u32 *)(end_of_rom - 3); in file_cbfs_load_header()
174 if (header->magic != good_magic || header->offset > in file_cbfs_load_header()
175 header->rom_size - header->boot_block_size) { in file_cbfs_load_header()
190 start_of_rom = (u8 *)(end_of_rom + 1 - cbfs_header.rom_size); in file_cbfs_init()
229 *file = (*file)->next; in file_cbfs_get_next()
243 if (!strcmp(name, cache_node->name)) in file_cbfs_find()
245 cache_node = cache_node->next; in file_cbfs_find()
259 u32 size; in file_cbfs_find_uncached() local
266 start = (u8 *)(end_of_rom + 1 - cbfs_header.rom_size); in file_cbfs_find_uncached()
267 size = cbfs_header.rom_size; in file_cbfs_find_uncached()
270 while (size >= align) { in file_cbfs_find_uncached()
274 result = file_cbfs_next_file(start, size, align, &node, &used); in file_cbfs_find_uncached()
284 size -= used; in file_cbfs_find_uncached()
294 return file->name; in file_cbfs_name()
300 return file->data_length; in file_cbfs_size()
306 return file->type; in file_cbfs_type()
312 u32 size; in file_cbfs_read() local
314 size = file->data_length; in file_cbfs_read()
315 if (maxsize && size > maxsize) in file_cbfs_read()
316 size = maxsize; in file_cbfs_read()
318 memcpy(buffer, file->data, size); in file_cbfs_read()
321 return size; in file_cbfs_read()