ソースを参照

add ARM thread state

Colin Davidson 1 年間 前
コミット
0e344ae2d6
1 ファイル変更20 行追加2 行削除
  1. 20 2
      core/sys/darwin/mach_darwin.odin

+ 20 - 2
core/sys/darwin/mach_darwin.odin

@@ -18,6 +18,9 @@ thread_act_t   :: distinct u64
 thread_state_t :: distinct ^u32
 thread_list_t  :: [^]thread_act_t
 
+MACH_PORT_NULL :: 0
+MACH_PORT_DEAD :: ~mach_port_t(0)
+
 MACH_MSG_PORT_DESCRIPTOR :: 0
 
 MACH_SEND_MSG     :: 0x00000001
@@ -44,10 +47,12 @@ VM_INHERIT_DONATE_COPY  :: 3
 
 TASK_BOOTSTRAP_PORT :: 4
 
+BOOTSTRAP_NAME_IN_USE :: 1101
+
 X86_THREAD_STATE32 :: 1
 X86_THREAD_STATE64 :: 4
-X86_THREAD_STATE32_COUNT :: size_of(x86_thread_state32_t) / size_of(u32)
-X86_THREAD_STATE64_COUNT :: size_of(x86_thread_state64_t) / size_of(u32)
+ARM_THREAD_STATE64 :: 6
+
 
 mach_msg_option_t :: distinct i32
 name_t :: distinct cstring
@@ -98,6 +103,7 @@ x86_thread_state32_t :: struct {
 	fs:  u32,
 	gs:  u32,
 }
+X86_THREAD_STATE32_COUNT :: size_of(x86_thread_state32_t) / size_of(u32)
 
 x86_thread_state64_t :: struct {
 	rax: u64,
@@ -122,6 +128,18 @@ x86_thread_state64_t :: struct {
 	fs: u64,
 	gs: u64,
 }
+X86_THREAD_STATE64_COUNT :: size_of(x86_thread_state64_t) / size_of(u32)
+
+arm_thread_state64_t :: struct {
+	x: [29]u64,
+	fp: u64,
+	lr: u64,
+	sp: u64,
+	pc: u64,
+	cpsr: u32,
+	pad:  u32,
+}
+ARM_THREAD_STATE64_COUNT :: size_of(arm_thread_state64_t) / size_of(u32)
 
 @(default_calling_convention="c")
 foreign mach {