|
@@ -1,6 +1,31 @@
|
|
package runtime
|
|
package runtime
|
|
|
|
|
|
-when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || (ODIN_NO_CRT && ODIN_OS != "windows") {
|
|
|
|
|
|
+when ODIN_NO_CRT && ODIN_OS == "windows" {
|
|
|
|
+ foreign import lib "system:NtDll.lib"
|
|
|
|
+
|
|
|
|
+ @(private="file")
|
|
|
|
+ @(default_calling_convention="std")
|
|
|
|
+ foreign lib {
|
|
|
|
+ RtlMoveMemory :: proc(dst, src: rawptr, length: int) ---
|
|
|
|
+ RtlFillMemory :: proc(dst: rawptr, length: int, fill: i32) ---
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @(link_name="memset", linkage="strong", require)
|
|
|
|
+ memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|
|
|
|
+ RtlFillMemory(ptr, len, val)
|
|
|
|
+ return ptr
|
|
|
|
+ }
|
|
|
|
+ @(link_name="memmove", linkage="strong", require)
|
|
|
|
+ memmove :: proc "c" (dst, src: rawptr, len: int) -> rawptr {
|
|
|
|
+ RtlMoveMemory(dst, src, len)
|
|
|
|
+ return dst
|
|
|
|
+ }
|
|
|
|
+ @(link_name="memcpy", linkage="strong", require)
|
|
|
|
+ memcpy :: proc "c" (dst, src: rawptr, len: int) -> rawptr {
|
|
|
|
+ RtlMoveMemory(dst, src, len)
|
|
|
|
+ return dst
|
|
|
|
+ }
|
|
|
|
+} else when ODIN_NO_CRT || (ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64") {
|
|
@(link_name="memset", linkage="strong", require)
|
|
@(link_name="memset", linkage="strong", require)
|
|
memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|
|
memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|
|
if ptr != nil && len != 0 {
|
|
if ptr != nil && len != 0 {
|
|
@@ -36,34 +61,6 @@ when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || (ODIN_NO_CRT && ODIN_OS !
|
|
}
|
|
}
|
|
return dst
|
|
return dst
|
|
|
|
|
|
- }
|
|
|
|
-} else when ODIN_NO_CRT && ODIN_OS == "windows" {
|
|
|
|
- foreign import lib "system:NtDll.lib"
|
|
|
|
-
|
|
|
|
- @(private="file")
|
|
|
|
- @(default_calling_convention="std")
|
|
|
|
- foreign lib {
|
|
|
|
- RtlMoveMemory :: proc(dst, src: rawptr, length: int) ---
|
|
|
|
- RtlFillMemory :: proc(dst: rawptr, length: int, fill: i32) ---
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @(link_name="memset", linkage="strong", require)
|
|
|
|
- memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|
|
|
|
- RtlFillMemory(ptr, len, val)
|
|
|
|
- return ptr
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @(link_name="memmove", linkage="strong", require)
|
|
|
|
- memmove :: proc "c" (dst, src: rawptr, len: int) -> rawptr {
|
|
|
|
- RtlMoveMemory(dst, src, len)
|
|
|
|
- return dst
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
- @(link_name="memcpy", linkage="strong", require)
|
|
|
|
- memcpy :: proc "c" (dst, src: rawptr, len: int) -> rawptr {
|
|
|
|
- RtlMoveMemory(dst, src, len)
|
|
|
|
- return dst
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|
|
memset :: proc "c" (ptr: rawptr, val: i32, len: int) -> rawptr {
|