about summary refs log tree commit diff stats
path: root/miasm/tools/emul_lib/libcodenat.h
diff options
context:
space:
mode:
Diffstat (limited to 'miasm/tools/emul_lib/libcodenat.h')
-rw-r--r--miasm/tools/emul_lib/libcodenat.h34
1 files changed, 32 insertions, 2 deletions
diff --git a/miasm/tools/emul_lib/libcodenat.h b/miasm/tools/emul_lib/libcodenat.h
index 26d6b850..bb123096 100644
--- a/miasm/tools/emul_lib/libcodenat.h
+++ b/miasm/tools/emul_lib/libcodenat.h
@@ -116,7 +116,6 @@ typedef struct {
 
 	unsigned int cond;
 
-	unsigned int ds;
 	unsigned int vm_exception_flags;
 	unsigned int vm_exception_flags_new;
 	unsigned int vm_last_write_ad;
@@ -165,6 +164,21 @@ typedef struct {
 	unsigned int tsc1_new;
 	unsigned int tsc2_new;
 
+
+	uint16_t es;
+	uint16_t cs;
+	uint16_t ss;
+	uint16_t ds;
+	uint16_t fs;
+	uint16_t gs;
+
+	uint16_t es_new;
+	uint16_t cs_new;
+	uint16_t ss_new;
+	uint16_t ds_new;
+	uint16_t fs_new;
+	uint16_t gs_new;
+
 	unsigned int cr0;
 	unsigned int cr0_new;
 
@@ -207,7 +221,7 @@ typedef struct {
 	uint64_t pfmem64_6;
 	uint64_t pfmem64_7;
 
-
+	uint32_t segm_base[0x10000];
 
 }vm_cpu_t;
 
@@ -270,6 +284,11 @@ void MEM_WRITE_16(uint64_t addr, unsigned short src);
 void MEM_WRITE_32(uint64_t addr, unsigned int src);
 void MEM_WRITE_64(uint64_t addr, uint64_t src);
 
+void MEM_WRITE_08_SEGM(uint16_t segm, uint64_t addr, unsigned char src);
+void MEM_WRITE_16_SEGM(uint16_t segm, uint64_t addr, unsigned short src);
+void MEM_WRITE_32_SEGM(uint16_t segm, uint64_t addr, unsigned int src);
+void MEM_WRITE_64_SEGM(uint16_t segm, uint64_t addr, uint64_t src);
+
 
 unsigned char MEM_LOOKUP_08(uint64_t addr);
 unsigned short MEM_LOOKUP_16(uint64_t addr);
@@ -277,6 +296,12 @@ unsigned int MEM_LOOKUP_32(uint64_t addr);
 uint64_t MEM_LOOKUP_64(uint64_t addr);
 
 
+unsigned char MEM_LOOKUP_08_SEGM(uint16_t segm, uint64_t addr);
+unsigned short MEM_LOOKUP_16_SEGM(uint16_t segm, uint64_t addr);
+unsigned int MEM_LOOKUP_32_SEGM(uint16_t segm, uint64_t addr);
+uint64_t MEM_LOOKUP_64_SEGM(uint16_t segm, uint64_t addr);
+
+
 
 
 void MEM_WRITE_08_PASSTHROUGH(uint64_t addr, unsigned char src);
@@ -340,6 +365,11 @@ typedef struct _reg_dict{
     unsigned int* ptr;
 } reg_dict;
 
+typedef struct _reg_segm_dict{
+    char* name;
+    uint16_t* ptr;
+} reg_segm_dict;
+
 typedef struct _reg_float_dict{
     char* name;
     void* ptr;