/* Swap from UUID format endian (BE) to the opposite or vice versa. */ void qemu_uuid_bswap(QemuUUID *uuid) { assert(QEMU_PTR_IS_ALIGNED(uuid, sizeof(uint32_t))); bswap32s(&uuid->fields.time_low); bswap16s(&uuid->fields.time_mid); bswap16s(&uuid->fields.time_high_and_version); }
static void bswap_sym(struct elf_sym *sym) { bswap32s(&sym->st_name); bswaptls(&sym->st_value); bswaptls(&sym->st_size); bswap16s(&sym->st_shndx); }
static void bswap_ehdr(struct elfhdr *ehdr) { bswap16s(&ehdr->e_type); /* Object file type */ bswap16s(&ehdr->e_machine); /* Architecture */ bswap32s(&ehdr->e_version); /* Object file version */ bswaptls(&ehdr->e_entry); /* Entry point virtual address */ bswaptls(&ehdr->e_phoff); /* Program header table file offset */ bswaptls(&ehdr->e_shoff); /* Section header table file offset */ bswap32s(&ehdr->e_flags); /* Processor-specific flags */ bswap16s(&ehdr->e_ehsize); /* ELF header size in bytes */ bswap16s(&ehdr->e_phentsize); /* Program header table entry size */ bswap16s(&ehdr->e_phnum); /* Program header table entry count */ bswap16s(&ehdr->e_shentsize); /* Section header table entry size */ bswap16s(&ehdr->e_shnum); /* Section header table entry count */ bswap16s(&ehdr->e_shstrndx); /* Section header string table index */ }
/* Note: on sparc, the lance 16 bit bus is swapped */ void ledma_memory_read(void *opaque, hwaddr addr, uint8_t *buf, int len, int do_bswap) { DMAState *s = opaque; int i; addr |= s->dmaregs[3]; trace_ledma_memory_read(addr); if (do_bswap) { sparc_iommu_memory_read(s->iommu, addr, buf, len); } else { addr &= ~1; len &= ~1; sparc_iommu_memory_read(s->iommu, addr, buf, len); for(i = 0; i < len; i += 2) { bswap16s((uint16_t *)(buf + i)); } } }
/* Note: on sparc, the lance 16 bit bus is swapped */ void ledma_memory_read(void *opaque, target_phys_addr_t addr, uint8_t *buf, int len, int do_bswap) { DMAState *s = opaque; int i; DPRINTF("DMA write, direction: %c, addr 0x%8.8x\n", s->dmaregs[0] & DMA_WRITE_MEM ? 'w': 'r', s->dmaregs[1]); addr |= s->dmaregs[7]; if (do_bswap) { sparc_iommu_memory_read(s->iommu, addr, buf, len); } else { addr &= ~1; len &= ~1; sparc_iommu_memory_read(s->iommu, addr, buf, len); for(i = 0; i < len; i += 2) { bswap16s((uint16_t *)(buf + i)); } } }
/* Change UUID from little endian (IPRT = VirtualBox format) to big endian * format (network byte order, standard, see RFC 4122) and vice versa. */ static void uuid_convert(uuid_t uuid) { bswap32s((uint32_t *)&uuid[0]); bswap16s((uint16_t *)&uuid[4]); bswap16s((uint16_t *)&uuid[6]); }