Fix FAT driver issues (FAT32 while being under 32MiB), liballoc alignment so SSE doesnt break

This commit is contained in:
2026-03-10 21:01:49 +01:00
parent 38557bab7d
commit 4b099f04f5
27 changed files with 3447 additions and 18 deletions

View File

@@ -67,7 +67,7 @@ void bootmain (void) {
device_probe_partitions (temp);
struct device* tempp0 = device_find ("TEMPp0");
vfs_create_volume ("TEMP", FS_FAT32, tempp0, true);
int x = vfs_create_volume ("TEMP", FS_FAT16, tempp0, true);
proc_pid_alloc_init ();
procgroup_pgid_alloc_init ();

View File

@@ -3,17 +3,22 @@
#define fx_save(buf) \
do { \
__asm__ volatile ("fxsave64 (%0)" ::"r"((buf)) : "memory"); \
__asm__ volatile ("fxsave64 %0" : "=m"(*(buf))::"memory"); \
} while (0)
#define fx_restore(buf) \
do { \
__asm__ volatile ("fxrstor64 (%0)" ::"r"((buf)) : "memory"); \
__asm__ volatile ("fxrstor64 %0" ::"m"(*(buf)) : "memory"); \
} while (0)
#define fx_init(buf) \
do { \
__asm__ volatile ("fninit; fxsave64 (%0)" ::"r"((buf)) : "memory"); \
memset ((buf), 0, sizeof ((buf))); \
__asm__ volatile ("fninit; fxsave64 %0" : "=m"(*(buf))::"memory"); \
uint32_t* __mxcsr = (uint32_t*)&(buf)[24]; \
*__mxcsr = 0x1F80; \
uint16_t* __fcw = (uint16_t*)&(buf)[0]; \
*__fcw = 0x037F; \
} while (0)
#endif // _KERNEL_AMD64_FX_H

View File

@@ -14,11 +14,11 @@
/* Platform-dependent process data */
struct proc_platformdata {
uint8_t fx_env[512] ALIGNED (16);
struct saved_regs regs;
uintptr_t kernel_stack;
uint64_t fs_base;
uintptr_t tls_vaddr;
uint8_t fx_env[512] ALIGNED (16);
};
#endif // _KERNEL_AMD64_PROC_H