mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 22:58:46 +00:00
Use Rtl*Memory procedures with -no-crt on Windows
This commit is contained in:
+29
-1
@@ -1,6 +1,6 @@
|
|||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || ODIN_NO_CRT {
|
when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || (ODIN_NO_CRT && ODIN_OS != "windows") {
|
||||||
@(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,6 +36,34 @@ when ODIN_ARCH == "wasm32" || ODIN_ARCH == "wasm64" || ODIN_NO_CRT {
|
|||||||
}
|
}
|
||||||
return dst
|
return dst
|
||||||
|
|
||||||
|
}
|
||||||
|
} else when ODIN_NO_CRT && ODIN_OS == "windows" {
|
||||||
|
foreign import Kernel32 "system:Kernel32.lib"
|
||||||
|
|
||||||
|
@(private="file")
|
||||||
|
@(default_calling_convention="std")
|
||||||
|
foreign Kernel32 {
|
||||||
|
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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user