aboutsummaryrefslogtreecommitdiff
path: root/base/runtime/procs_windows_amd64.odin
diff options
context:
space:
mode:
Diffstat (limited to 'base/runtime/procs_windows_amd64.odin')
-rw-r--r--base/runtime/procs_windows_amd64.odin26
1 files changed, 26 insertions, 0 deletions
diff --git a/base/runtime/procs_windows_amd64.odin b/base/runtime/procs_windows_amd64.odin
new file mode 100644
index 000000000..ea495f5fa
--- /dev/null
+++ b/base/runtime/procs_windows_amd64.odin
@@ -0,0 +1,26 @@
+//+private
+//+no-instrumentation
+package runtime
+
+foreign import kernel32 "system:Kernel32.lib"
+
+@(private)
+foreign kernel32 {
+ RaiseException :: proc "system" (dwExceptionCode, dwExceptionFlags, nNumberOfArguments: u32, lpArguments: ^uint) -> ! ---
+}
+
+windows_trap_array_bounds :: proc "contextless" () -> ! {
+ EXCEPTION_ARRAY_BOUNDS_EXCEEDED :: 0xC000008C
+
+
+ RaiseException(EXCEPTION_ARRAY_BOUNDS_EXCEEDED, 0, 0, nil)
+}
+
+windows_trap_type_assertion :: proc "contextless" () -> ! {
+ windows_trap_array_bounds()
+}
+
+when ODIN_NO_CRT {
+ @(require)
+ foreign import crt_lib "procs_windows_amd64.asm"
+}