diff --git a/kernel/modules/acpi/acpi.v b/kernel/modules/acpi/acpi.v index bb46e42bd..82bb165b4 100644 --- a/kernel/modules/acpi/acpi.v +++ b/kernel/modules/acpi/acpi.v @@ -44,7 +44,7 @@ fn use_xsdt() bool { return rsdp.revision >= 2 && rsdp.xsdt_addr != 0 } -[cinit] +@[cinit] __global ( volatile rsdp_req = limine.LimineRSDPRequest{ response: 0 diff --git a/kernel/modules/acpi/madt.v b/kernel/modules/acpi/madt.v index 6a78b58f0..2a9516ad3 100644 --- a/kernel/modules/acpi/madt.v +++ b/kernel/modules/acpi/madt.v @@ -4,7 +4,7 @@ module acpi -[packed] +@[packed] struct MADT { pub: header SDT @@ -13,14 +13,14 @@ pub: entries_begin u8 } -[packed] +@[packed] struct MADTHeader { pub: id u8 length u8 } -[packed] +@[packed] struct MADTLocalApic { pub: header MADTHeader @@ -29,7 +29,7 @@ pub: flags u32 } -[packed] +@[packed] struct MADTIoApic { pub: header MADTHeader @@ -39,7 +39,7 @@ pub: gsib u32 } -[packed] +@[packed] struct MADTISO { pub: header MADTHeader @@ -49,7 +49,7 @@ pub: flags u16 } -[packed] +@[packed] struct MADTNMI { pub: header MADTHeader diff --git a/kernel/modules/block/partition/partition.v b/kernel/modules/block/partition/partition.v index 708d5c055..1c68d2ad2 100644 --- a/kernel/modules/block/partition/partition.v +++ b/kernel/modules/block/partition/partition.v @@ -31,7 +31,7 @@ pub mut: sector_cnt u64 } -[packed] +@[packed] struct MBRPartition { pub mut: drive_status u8 @@ -52,7 +52,7 @@ pub mut: name [9]u64 } -[packed] +@[packed] struct GPTPartitionTableHDR { pub mut: identifier u64 diff --git a/kernel/modules/dev/ahci/ahci.v b/kernel/modules/dev/ahci/ahci.v index ec9537620..ce8a9c82e 100644 --- a/kernel/modules/dev/ahci/ahci.v +++ b/kernel/modules/dev/ahci/ahci.v @@ -40,7 +40,7 @@ const ( sector_size = 0x200 ) -[packed] +@[packed] struct AHCIRegisters { pub mut: cap u32 @@ -58,7 +58,7 @@ pub mut: vendor [24]u32 } -[packed] +@[packed] struct AHCIPortRegisters { pub mut: clb u32 @@ -83,7 +83,7 @@ pub mut: vs [10]u32 } -[packed] +@[packed] struct AHCIHBACommand { pub mut: flags u16 @@ -94,7 +94,7 @@ pub mut: reserved [4]u32 } -[packed] +@[packed] struct AHCIHBAPrdt { pub mut: dba u32 @@ -103,7 +103,7 @@ pub mut: dbc u32 } -[packed] +@[packed] struct AHCIHBACommandTable { pub mut: cfis [64]u8 @@ -112,7 +112,7 @@ pub mut: prdt [1]AHCIHBAPrdt } -[packed] +@[packed] struct AHCIFISh2d { pub mut: fis_type u8 @@ -134,7 +134,7 @@ pub mut: reserved u32 } -[packed] +@[packed] struct AHCIFISd2h { fis_type u8 flags u8 diff --git a/kernel/modules/dev/ata/ata.v b/kernel/modules/dev/ata/ata.v index 058ed8fb5..d0635a27f 100644 --- a/kernel/modules/dev/ata/ata.v +++ b/kernel/modules/dev/ata/ata.v @@ -31,7 +31,7 @@ const ata_sectors_per_prdt = 16 const ata_bytes_per_prdt = ata_bytes_per_sector * ata_sectors_per_prdt -[packed] +@[packed] struct PRDT { pub mut: buffer_phys u32 diff --git a/kernel/modules/dev/console/console.v b/kernel/modules/dev/console/console.v index 8f89e7994..8c6e65a20 100644 --- a/kernel/modules/dev/console/console.v +++ b/kernel/modules/dev/console/console.v @@ -643,7 +643,7 @@ pub fn limine_term_callback(p &limine.LimineTerminal, t u64, a u64, b u64, c u64 } } -[cinit] +@[cinit] __global ( volatile term_req = limine.LimineTerminalRequest{ response: 0 diff --git a/kernel/modules/dev/nvme/nvme.v b/kernel/modules/dev/nvme/nvme.v index 3b265afca..90c13caeb 100644 --- a/kernel/modules/dev/nvme/nvme.v +++ b/kernel/modules/dev/nvme/nvme.v @@ -42,7 +42,7 @@ const ( nvme_io_queue_cnt = 0x4 ) -[packed] +@[packed] struct NVMERegisters { pub mut: cap u64 @@ -58,7 +58,7 @@ pub mut: acq u64 } -[packed] +@[packed] struct NVMECommandCreateCQ { pub mut: rsvd1 [5]u32 @@ -71,7 +71,7 @@ pub mut: rsvd3 [4]u32 } -[packed] +@[packed] struct NVMECommandCreateSQ { pub mut: rsvd1 [5]u32 @@ -84,7 +84,7 @@ pub mut: rsvd3 [4]u32 } -[packed] +@[packed] struct NVMECommandDeleteQ { pub mut: rsvd1 [9]u32 @@ -93,7 +93,7 @@ pub mut: rsvd3 [5]u32 } -[packed] +@[packed] struct NVMECommandAbort { pub mut: rsvd1 [9]u32 @@ -102,7 +102,7 @@ pub mut: rsvd2 [5]u32 } -[packed] +@[packed] struct NVMECommandFeatures { pub mut: nsid u32 @@ -114,7 +114,7 @@ pub mut: rsvd2 [4]u32 } -[packed] +@[packed] struct NVMECommandIdentify { pub mut: nsid u32 @@ -125,7 +125,7 @@ pub mut: rsvd2 [5]u32 } -[packed] +@[packed] struct NVMECommandRW { pub mut: nsid u32 @@ -153,7 +153,7 @@ pub mut: rw NVMECommandRW } -[packed] +@[packed] struct NVMECommand { pub mut: opcode u8 @@ -162,7 +162,7 @@ pub mut: private NVMECommandPrivate } -[packed] +@[packed] struct NVMECompletion { pub mut: result u32 @@ -173,7 +173,7 @@ pub mut: status u16 } -[packed] +@[packed] struct NVMEPowerStateID { pub mut: max_power u16 @@ -193,7 +193,7 @@ pub mut: rsvd3 [9]u8 } -[packed] +@[packed] struct NVMEControllerID { pub mut: vid u16 @@ -240,7 +240,7 @@ pub mut: vs [1024]u8 } -[packed] +@[packed] struct NVMELbaf { pub mut: ms u16 @@ -248,7 +248,7 @@ pub mut: rp u8 } -[packed] +@[packed] struct NVMENamespaceID { pub mut: nsze u64 diff --git a/kernel/modules/dev/random/random.v b/kernel/modules/dev/random/random.v index 111b62701..75b68c468 100644 --- a/kernel/modules/dev/random/random.v +++ b/kernel/modules/dev/random/random.v @@ -33,12 +33,12 @@ mut: reseed_ctr u64 } -[inline] +@[inline] fn rotl32(a u32, shift u32) u32 { return (a << shift) | (a >> (32 - shift)) } -[inline] +@[inline] fn qr(a &u32, b &u32, c &u32, d &u32) { unsafe { *b = *b ^ rotl32(*a + *d, 7) diff --git a/kernel/modules/fs/ext2/ext2.v b/kernel/modules/fs/ext2/ext2.v index 354bc3e96..eafa5ce26 100644 --- a/kernel/modules/fs/ext2/ext2.v +++ b/kernel/modules/fs/ext2/ext2.v @@ -13,7 +13,7 @@ import event.eventstruct import memory import fs -[packed] +@[packed] struct EXT2Superblock { pub mut: inode_cnt u32 @@ -53,7 +53,7 @@ pub mut: last_mnt_path[8] u64 } -[packed] +@[packed] struct EXT2BlockGroupDescriptor { pub mut: block_addr_bitmap u32 @@ -65,7 +65,7 @@ pub mut: reserved[7] u16 } -[packed] +@[packed] struct EXT2Inode { pub mut: permissions u16 @@ -87,7 +87,7 @@ pub mut: frag_addr u32 } -[packed] +@[packed] struct EXT2DirectoryEntry { pub mut: inode_index u32 diff --git a/kernel/modules/initramfs/initramfs.v b/kernel/modules/initramfs/initramfs.v index c15325e20..9c7df74f7 100644 --- a/kernel/modules/initramfs/initramfs.v +++ b/kernel/modules/initramfs/initramfs.v @@ -51,12 +51,12 @@ fn octal_to_int(s string) u64 { fn C.string_free(&string) -[cinit] +@[cinit] __global ( volatile module_req = limine.LimineModuleRequest{response: 0} ) -[manualfree] +@[manualfree] pub fn initialise() { if module_req.response.module_count < 1 { panic('No initramfs') diff --git a/kernel/modules/ioctl/common.v b/kernel/modules/ioctl/common.v index 120666c42..b5aeb9628 100644 --- a/kernel/modules/ioctl/common.v +++ b/kernel/modules/ioctl/common.v @@ -23,22 +23,22 @@ pub const ioc_typeshift = (ioc_nrshift + ioc_nrbits) pub const ioc_sizeshift = (ioc_typeshift + ioc_typebits) pub const ioc_dirshift = (ioc_sizeshift + ioc_sizebits) -[inline] +@[inline] pub fn ioctl_dir(ioc u32) u32 { return (ioc >> ioc_dirshift) & ioc_dirmask } -[inline] +@[inline] pub fn ioctl_type(ioc u32) u32 { return (ioc >> ioc_typeshift) & ioc_typemask } -[inline] +@[inline] pub fn ioctl_size(ioc u32) u32 { return (ioc >> ioc_sizeshift) & ioc_sizemask } -[inline] +@[inline] pub fn ioctl_nr(ioc u32) u32 { return (ioc >> ioc_nrshift) & ioc_nrmask } diff --git a/kernel/modules/lib/panic.v b/kernel/modules/lib/panic.v index 49b7cd795..b2ced8208 100644 --- a/kernel/modules/lib/panic.v +++ b/kernel/modules/lib/panic.v @@ -12,7 +12,7 @@ import katomic fn C.printf_panic(charptr, ...voidptr) -[noreturn] +@[noreturn] pub fn kpanic(gpr_state &cpulocal.GPRState, message charptr) { asm volatile amd64 { cli diff --git a/kernel/modules/lib/stubs/file.v b/kernel/modules/lib/stubs/file.v index 7ec18377c..8cf8516a7 100644 --- a/kernel/modules/lib/stubs/file.v +++ b/kernel/modules/lib/stubs/file.v @@ -17,37 +17,37 @@ __global ( stderr = &FILE(voidptr(0)) ) -[export: 'fflush'] +@[export: 'fflush'] pub fn fflush(stream &FILE) int { return 0 } -[export: 'getchar'] +@[export: 'getchar'] pub fn getchar() int { lib.kpanic(voidptr(0), c'getchar is a stub') } -[export: 'getc'] +@[export: 'getc'] pub fn getc(stream &FILE) int { lib.kpanic(voidptr(0), c'getc is a stub') } -[export: 'fgets'] +@[export: 'fgets'] pub fn fgets(str charptr, count u64, stream &FILE) charptr { lib.kpanic(voidptr(0), c'fgets is a stub') } -[export: 'popen'] +@[export: 'popen'] pub fn popen(command &char, typ &char) &FILE { lib.kpanic(voidptr(0), c'popen is a stub') } -[export: 'pclose'] +@[export: 'pclose'] pub fn pclose(stream &FILE) int { lib.kpanic(voidptr(0), c'pclose is a stub') } -[export: 'write'] +@[export: 'write'] pub fn write(fd int, buf voidptr, count u64) i64 { if fd != 1 && fd != 2 { lib.kpanic(voidptr(0), c'write to fd != 1 && fd != 2 is a stub') @@ -58,7 +58,7 @@ pub fn write(fd int, buf voidptr, count u64) i64 { return i64(count) } -[export: 'isatty'] +@[export: 'isatty'] pub fn isatty(fd int) int { return 1 } diff --git a/kernel/modules/lib/stubs/misc.v b/kernel/modules/lib/stubs/misc.v index 922260cf6..c3b777a89 100644 --- a/kernel/modules/lib/stubs/misc.v +++ b/kernel/modules/lib/stubs/misc.v @@ -6,23 +6,23 @@ module stubs import lib -[export: '__ctype_tolower_loc'] +@[export: '__ctype_tolower_loc'] pub fn ctype_tolower_loc() &&int { lib.kpanic(voidptr(0), c'__ctype_tolower_loc is a stub') } -[export: '__ctype_toupper_loc'] +@[export: '__ctype_toupper_loc'] pub fn ctype_toupper_loc() &&int { lib.kpanic(voidptr(0), c'__ctype_toupper_loc is a stub') } -[export: 'exit'] -[noreturn] +@[export: 'exit'] +@[noreturn] pub fn kexit(code int) { lib.kpanic(voidptr(0), c'Kernel has called exit()') } -[export: 'qsort'] +@[export: 'qsort'] pub fn qsort(ptr voidptr, count u64, size u64, comp fn (a voidptr, b voidptr) int) { lib.kpanic(voidptr(0), c'qsort is a stub') } diff --git a/kernel/modules/lib/stubs/pthread.v b/kernel/modules/lib/stubs/pthread.v index 49cacfbc5..a015d4e83 100644 --- a/kernel/modules/lib/stubs/pthread.v +++ b/kernel/modules/lib/stubs/pthread.v @@ -13,7 +13,7 @@ struct C.__thread_data {} struct C.__threadattr {} -[export: 'pthread_create'] +@[export: 'pthread_create'] pub fn pthread_create(t &&C.__thread_data, attr &C.__threadattr, start_routine fn (voidptr) voidptr, arg voidptr) int { if voidptr(attr) != voidptr(0) { lib.kpanic(voidptr(0), c'pthread_create() called with non-NULL attr') @@ -26,12 +26,12 @@ pub fn pthread_create(t &&C.__thread_data, attr &C.__threadattr, start_routine f return 0 } -[export: 'pthread_detach'] +@[export: 'pthread_detach'] pub fn pthread_detach(t &C.__thread_data) int { return 0 } -[export: 'pthread_join'] +@[export: 'pthread_join'] pub fn pthread_join(t &C.__thread_data, mut retval voidptr) int { unsafe { *retval = event.pthread_wait(&proc.Thread(t)) @@ -39,8 +39,8 @@ pub fn pthread_join(t &C.__thread_data, mut retval voidptr) int { return 0 } -[export: 'pthread_exit'] -[noreturn] +@[export: 'pthread_exit'] +@[noreturn] pub fn pthread_exit(retval voidptr) { event.pthread_exit(retval) for {} diff --git a/kernel/modules/lib/stubs/string.v b/kernel/modules/lib/stubs/string.v index 6bb6318ad..984663b34 100644 --- a/kernel/modules/lib/stubs/string.v +++ b/kernel/modules/lib/stubs/string.v @@ -4,12 +4,12 @@ module stubs -[export: 'toupper'] +@[export: 'toupper'] pub fn toupper(c int) int { return if c >= int(`a`) && c <= int(`z`) { c - 0x20 } else { c } } -[export: 'memcpy'] +@[export: 'memcpy'] pub fn memcpy(dest voidptr, src voidptr, size u64) voidptr { unsafe { mut destm := &u8(dest) @@ -22,7 +22,7 @@ pub fn memcpy(dest voidptr, src voidptr, size u64) voidptr { return dest } -[export: 'memset'] +@[export: 'memset'] pub fn memset(dest voidptr, c int, size u64) voidptr { unsafe { mut destm := &u8(dest) @@ -34,7 +34,7 @@ pub fn memset(dest voidptr, c int, size u64) voidptr { return dest } -[export: 'memset64'] +@[export: 'memset64'] pub fn memset64(dest voidptr, c int, size u64) voidptr { unsafe { mut destm := &u64(dest) @@ -46,7 +46,7 @@ pub fn memset64(dest voidptr, c int, size u64) voidptr { return dest } -[export: 'memmove'] +@[export: 'memmove'] pub fn memmove(dest voidptr, src voidptr, size u64) voidptr { unsafe { mut destm := &u8(dest) @@ -66,7 +66,7 @@ pub fn memmove(dest voidptr, src voidptr, size u64) voidptr { } } -[export: 'memcmp'] +@[export: 'memcmp'] pub fn memcmp(_s1 voidptr, _s2 voidptr, size u64) int { unsafe { s1 := &u8(_s1) @@ -81,7 +81,7 @@ pub fn memcmp(_s1 voidptr, _s2 voidptr, size u64) int { return 0 } -[export: 'strcpy'] +@[export: 'strcpy'] pub fn strcpy(dest &char, src &char) &char { mut i := u64(0) @@ -104,7 +104,7 @@ pub fn strcpy(dest &char, src &char) &char { } } -[export: 'strncpy'] +@[export: 'strncpy'] pub fn strncpy(dest &char, src &char, n u64) &char { mut i := u64(0) @@ -134,7 +134,7 @@ pub fn strncpy(dest &char, src &char, n u64) &char { } } -[export: 'strcmp'] +@[export: 'strcmp'] pub fn strcmp(_s1 &char, _s2 &char) int { unsafe { mut i := u64(0) @@ -159,7 +159,7 @@ pub fn strcmp(_s1 &char, _s2 &char) int { return 0 } -[export: 'strncmp'] +@[export: 'strncmp'] pub fn strncmp(_s1 &char, _s2 &char, size u64) int { unsafe { s1 := &u8(_s1) @@ -181,7 +181,7 @@ pub fn strncmp(_s1 &char, _s2 &char, size u64) int { return 0 } -[export: 'strlen'] +@[export: 'strlen'] pub fn strlen(_ptr &char) u64 { mut i := u64(0) diff --git a/kernel/modules/memory/physical.v b/kernel/modules/memory/physical.v index 85e7cae14..cbca2a220 100644 --- a/kernel/modules/memory/physical.v +++ b/kernel/modules/memory/physical.v @@ -2,7 +2,7 @@ // Code is governed by the GPL-2.0 license. // Copyright (C) 2021-2022 The Vinix authors. -[manualfree] +@[manualfree] module memory import lib @@ -251,7 +251,7 @@ mut: size u64 } -[export: 'free'] +@[export: 'free'] pub fn free(ptr voidptr) { if ptr == voidptr(0) { return @@ -283,7 +283,7 @@ fn slab_for(size u64) ?&Slab { return none } -[export: 'malloc'] +@[export: 'malloc'] pub fn malloc(size u64) voidptr { mut slab := slab_for(8 + size) or { return big_alloc(size) } @@ -307,7 +307,7 @@ fn big_alloc(size u64) voidptr { return voidptr(u64(ptr) + higher_half + page_size) } -[export: 'realloc'] +@[export: 'realloc'] pub fn realloc(ptr voidptr, new_size u64) voidptr { if ptr == 0 { return malloc(new_size) @@ -354,7 +354,7 @@ fn big_realloc(ptr voidptr, new_size u64) voidptr { return new_ptr } -[export: 'calloc'] +@[export: 'calloc'] pub fn calloc(a u64, b u64) voidptr { return unsafe { C.malloc(a * b) } } diff --git a/kernel/modules/memory/virtual.v b/kernel/modules/memory/virtual.v index 3f8078ec0..f7f72a5ba 100644 --- a/kernel/modules/memory/virtual.v +++ b/kernel/modules/memory/virtual.v @@ -158,7 +158,7 @@ pub fn (mut pagemap Pagemap) map_page(virt u64, phys u64, flags u64) ? { } } -[cinit] +@[cinit] __global ( volatile kaddr_req = limine.LimineKernelAddressRequest{response: 0} volatile memmap_req = limine.LimineMemmapRequest{response: 0} diff --git a/kernel/modules/sched/sched.v b/kernel/modules/sched/sched.v index 8df91fdf3..6133e82c3 100644 --- a/kernel/modules/sched/sched.v +++ b/kernel/modules/sched/sched.v @@ -287,7 +287,7 @@ pub fn dequeue_and_yield() { yield(true) } -[noreturn] +@[noreturn] pub fn dequeue_and_die() { asm volatile amd64 { cli diff --git a/kernel/modules/syscall/syscall.v b/kernel/modules/syscall/syscall.v index bd267154f..bb13d3555 100644 --- a/kernel/modules/syscall/syscall.v +++ b/kernel/modules/syscall/syscall.v @@ -15,7 +15,7 @@ fn leave(context &cpulocal.GPRState) { userland.dispatch_a_signal(context) } -[_naked] +@[_naked] fn syscall_entry() { asm volatile amd64 { swapgs // Save user stack diff --git a/kernel/modules/term/term.v b/kernel/modules/term/term.v index 22d031d5f..9142490dd 100644 --- a/kernel/modules/term/term.v +++ b/kernel/modules/term/term.v @@ -21,7 +21,7 @@ __global ( framebuffer_height = u64(0) ) -[cinit] +@[cinit] __global ( volatile fb_req = limine.LimineFramebufferRequest{response: 0} ) diff --git a/kernel/modules/time/time.v b/kernel/modules/time/time.v index 8763e5761..598f0c036 100644 --- a/kernel/modules/time/time.v +++ b/kernel/modules/time/time.v @@ -62,7 +62,7 @@ __global ( realtime_clock TimeSpec ) -[cinit] +@[cinit] __global ( volatile boottime_req = limine.LimineBootTimeRequest{response: 0} ) diff --git a/kernel/modules/userland/userland.v b/kernel/modules/userland/userland.v index 15a94d015..1b152d237 100644 --- a/kernel/modules/userland/userland.v +++ b/kernel/modules/userland/userland.v @@ -192,7 +192,7 @@ pub fn syscall_sigentry(_ voidptr, sigentry u64) (u64, u64) { return 0, 0 } -[noreturn] +@[noreturn] pub fn syscall_sigreturn(_ voidptr, context &cpulocal.GPRState, old_mask u64) { mut t := unsafe { proc.current_thread() } @@ -461,7 +461,7 @@ pub fn syscall_waitpid(_ voidptr, pid int, _status &int, options int) (u64, u64) return u64(ret), 0 } -[noreturn] +@[noreturn] pub fn syscall_exit(_ voidptr, status int) { mut current_thread := proc.current_thread() mut current_process := current_thread.process diff --git a/kernel/modules/x86/cpu/local/local.v b/kernel/modules/x86/cpu/local/local.v index a234f02e0..335082c6a 100644 --- a/kernel/modules/x86/cpu/local/local.v +++ b/kernel/modules/x86/cpu/local/local.v @@ -7,7 +7,7 @@ module local import x86.cpu import trace -[packed] +@[packed] pub struct TSS { pub mut: unused0 u32 diff --git a/kernel/modules/x86/gdt/gdt.v b/kernel/modules/x86/gdt/gdt.v index 92021a250..beed76a3e 100644 --- a/kernel/modules/x86/gdt/gdt.v +++ b/kernel/modules/x86/gdt/gdt.v @@ -6,13 +6,13 @@ module gdt import klock -[packed] +@[packed] struct GDTPointer { size u16 address voidptr } -[packed] +@[packed] struct GDTEntry { limit u16 base_low16 u16 diff --git a/kernel/modules/x86/idt/idt.v b/kernel/modules/x86/idt/idt.v index 52a36e3d6..9ddb4eeed 100644 --- a/kernel/modules/x86/idt/idt.v +++ b/kernel/modules/x86/idt/idt.v @@ -6,13 +6,13 @@ module idt import klock -[packed] +@[packed] struct IDTPointer { size u16 address voidptr } -[packed] +@[packed] struct IDTEntry { pub mut: offset_low u16 diff --git a/kernel/modules/x86/smp/smp.v b/kernel/modules/x86/smp/smp.v index 9c286171d..122b2fdf8 100644 --- a/kernel/modules/x86/smp/smp.v +++ b/kernel/modules/x86/smp/smp.v @@ -15,7 +15,7 @@ __global ( smp_ready = false ) -[cinit] +@[cinit] __global ( volatile smp_req = limine.LimineSMPRequest{ response: 0 diff --git a/util-vinix/lscpu/cpu_x64.v b/util-vinix/lscpu/cpu_x64.v index b344daf7d..e82534e1f 100644 --- a/util-vinix/lscpu/cpu_x64.v +++ b/util-vinix/lscpu/cpu_x64.v @@ -4,7 +4,7 @@ module cpu -[packed] +@[packed] struct RawVendorID { mut: ebx u32 @@ -13,7 +13,7 @@ mut: zero u8 } -[packed] +@[packed] struct RawModelName { mut: eax1 u32