diff options
| author | Bobby <[email protected]> | 2026-02-24 08:29:55 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2026-02-24 08:29:55 +0530 |
| commit | 93ad27d2426618ee254da6b731f18309f2550682 (patch) | |
| tree | d6f90a8c98a554353a9b9c94a8b7a7da66ada78a /hikari | |
| parent | 2a1ec6e05dd8484c4019d3af1d0ec79c6ad39a1c (diff) | |
| download | akiba-93ad27d2426618ee254da6b731f18309f2550682.tar.xz akiba-93ad27d2426618ee254da6b731f18309f2550682.zip | |
feat: Update EFI protocols to use custom calling convention and refactor main entry point
Diffstat (limited to 'hikari')
| -rw-r--r-- | hikari/efi/efi.zig | 4 | ||||
| -rw-r--r-- | hikari/efi/protocols/block_io.zig | 9 | ||||
| -rw-r--r-- | hikari/efi/protocols/disk_io.zig | 5 | ||||
| -rw-r--r-- | hikari/efi/protocols/graphics_output.zig | 7 | ||||
| -rw-r--r-- | hikari/efi/protocols/loaded_image.zig | 3 | ||||
| -rw-r--r-- | hikari/efi/protocols/protocols.zig | 12 | ||||
| -rw-r--r-- | hikari/efi/protocols/simple_text_input.zig | 5 | ||||
| -rw-r--r-- | hikari/efi/protocols/simple_text_output.zig | 19 | ||||
| -rw-r--r-- | hikari/efi/protocols/simple_unit_system.zig | 3 | ||||
| -rw-r--r-- | hikari/efi/protocols/unit.zig | 29 | ||||
| -rw-r--r-- | hikari/efi/services/boot.zig | 87 | ||||
| -rw-r--r-- | hikari/efi/services/runtime.zig | 29 | ||||
| -rw-r--r-- | hikari/hikari.zig | 9 |
13 files changed, 121 insertions, 100 deletions
diff --git a/hikari/efi/efi.zig b/hikari/efi/efi.zig index 8d67232..96b83cc 100644 --- a/hikari/efi/efi.zig +++ b/hikari/efi/efi.zig @@ -1,5 +1,9 @@ //! Hikari EFI Interface +const std = @import("std"); + +pub const akiba: std.builtin.CallingConvention = .{ .x86_64_win = .{} }; + pub const constants = @import("constants/constants.zig"); pub const types = @import("types/types.zig"); pub const services = @import("services/services.zig"); diff --git a/hikari/efi/protocols/block_io.zig b/hikari/efi/protocols/block_io.zig index 76ff976..b9a5145 100644 --- a/hikari/efi/protocols/block_io.zig +++ b/hikari/efi/protocols/block_io.zig @@ -1,5 +1,6 @@ //! Hikari EFI Block I/O Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const block = @import("../types/block.zig"); @@ -10,7 +11,7 @@ pub const BlockIoProtocol = extern struct { reset: *const fn ( self: *BlockIoProtocol, extended_verification: bool, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, read_blocks: *const fn ( self: *BlockIoProtocol, @@ -18,7 +19,7 @@ pub const BlockIoProtocol = extern struct { lba: types.Lba, buffer_size: usize, buffer: [*]u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, write_blocks: *const fn ( self: *BlockIoProtocol, @@ -26,11 +27,11 @@ pub const BlockIoProtocol = extern struct { lba: types.Lba, buffer_size: usize, buffer: [*]const u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, flush_blocks: *const fn ( self: *BlockIoProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; pub const block_io_protocol_revision1: u64 = 0x00010000; diff --git a/hikari/efi/protocols/disk_io.zig b/hikari/efi/protocols/disk_io.zig index 223d8cc..1334016 100644 --- a/hikari/efi/protocols/disk_io.zig +++ b/hikari/efi/protocols/disk_io.zig @@ -1,5 +1,6 @@ //! Hikari EFI Disk I/O Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); pub const DiskIoProtocol = extern struct { @@ -11,7 +12,7 @@ pub const DiskIoProtocol = extern struct { offset: u64, buffer_size: usize, buffer: [*]u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, write_disk: *const fn ( self: *DiskIoProtocol, @@ -19,7 +20,7 @@ pub const DiskIoProtocol = extern struct { offset: u64, buffer_size: usize, buffer: [*]const u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; pub const disk_io_protocol_revision: u64 = 0x00010000; diff --git a/hikari/efi/protocols/graphics_output.zig b/hikari/efi/protocols/graphics_output.zig index 94d87d3..9f4731e 100644 --- a/hikari/efi/protocols/graphics_output.zig +++ b/hikari/efi/protocols/graphics_output.zig @@ -1,5 +1,6 @@ //! Hikari EFI Graphics Output Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const graphics = @import("../types/graphics.zig"); @@ -9,12 +10,12 @@ pub const GraphicsOutputProtocol = extern struct { mode_number: u32, size_of_info: *usize, info: **graphics.GraphicsOutputModeInformation, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_mode: *const fn ( self: *GraphicsOutputProtocol, mode_number: u32, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, blt: *const fn ( self: *GraphicsOutputProtocol, @@ -27,7 +28,7 @@ pub const GraphicsOutputProtocol = extern struct { width: usize, height: usize, delta: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, mode: *graphics.GraphicsOutputProtocolMode, }; diff --git a/hikari/efi/protocols/loaded_image.zig b/hikari/efi/protocols/loaded_image.zig index f596417..969ee74 100644 --- a/hikari/efi/protocols/loaded_image.zig +++ b/hikari/efi/protocols/loaded_image.zig @@ -1,5 +1,6 @@ //! Hikari EFI Loaded Image Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const memory = @import("../types/memory.zig"); @@ -16,7 +17,7 @@ pub const LoadedImageProtocol = extern struct { image_size: u64, image_code_type: memory.MemoryType, image_data_type: memory.MemoryType, - unload: *const fn (image_handle: types.Handle) callconv(.C) types.Status, + unload: *const fn (image_handle: types.Handle) callconv(efi.akiba) types.Status, }; pub const loaded_image_protocol_revision: u32 = 0x1000; diff --git a/hikari/efi/protocols/protocols.zig b/hikari/efi/protocols/protocols.zig index 2e086fa..8d12b01 100644 --- a/hikari/efi/protocols/protocols.zig +++ b/hikari/efi/protocols/protocols.zig @@ -3,19 +3,19 @@ pub const simple_text_input = @import("simple_text_input.zig"); pub const simple_text_output = @import("simple_text_output.zig"); pub const graphics_output = @import("graphics_output.zig"); -pub const file = @import("file.zig"); -pub const simple_file_system = @import("simple_file_system.zig"); +pub const unit = @import("unit.zig"); +pub const simple_unit_system = @import("simple_unit_system.zig"); pub const block_io = @import("block_io.zig"); pub const disk_io = @import("disk_io.zig"); pub const loaded_image = @import("loaded_image.zig"); -pub const device_path = @import("device_path.zig"); +pub const device_location = @import("device_location.zig"); pub const SimpleTextInputProtocol = simple_text_input.SimpleTextInputProtocol; pub const SimpleTextOutputProtocol = simple_text_output.SimpleTextOutputProtocol; pub const GraphicsOutputProtocol = graphics_output.GraphicsOutputProtocol; -pub const FileProtocol = file.FileProtocol; -pub const SimpleFileSystemProtocol = simple_file_system.SimpleFileSystemProtocol; +pub const UnitProtocol = unit.UnitProtocol; +pub const SimpleUnitSystemProtocol = simple_unit_system.SimpleUnitSystemProtocol; pub const BlockIoProtocol = block_io.BlockIoProtocol; pub const DiskIoProtocol = disk_io.DiskIoProtocol; pub const LoadedImageProtocol = loaded_image.LoadedImageProtocol; -pub const DevicePathProtocol = device_path.DevicePathProtocol; +pub const DeviceLocationProtocol = device_location.DeviceLocationProtocol; diff --git a/hikari/efi/protocols/simple_text_input.zig b/hikari/efi/protocols/simple_text_input.zig index c4f07cd..95c715c 100644 --- a/hikari/efi/protocols/simple_text_input.zig +++ b/hikari/efi/protocols/simple_text_input.zig @@ -1,5 +1,6 @@ //! Hikari EFI Simple Text Input Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const input = @import("../types/input.zig"); @@ -7,12 +8,12 @@ pub const SimpleTextInputProtocol = extern struct { reset: *const fn ( self: *SimpleTextInputProtocol, extended_verification: bool, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, read_key_stroke: *const fn ( self: *SimpleTextInputProtocol, key: *input.InputKey, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, wait_for_key: types.Event, }; diff --git a/hikari/efi/protocols/simple_text_output.zig b/hikari/efi/protocols/simple_text_output.zig index 168bbc9..641ed6f 100644 --- a/hikari/efi/protocols/simple_text_output.zig +++ b/hikari/efi/protocols/simple_text_output.zig @@ -1,54 +1,55 @@ //! Hikari EFI Simple Text Output Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); pub const SimpleTextOutputProtocol = extern struct { reset: *const fn ( self: *SimpleTextOutputProtocol, extended_verification: bool, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, output_string: *const fn ( self: *SimpleTextOutputProtocol, string: [*:0]const types.Char16, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, test_string: *const fn ( self: *SimpleTextOutputProtocol, string: [*:0]const types.Char16, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, query_mode: *const fn ( self: *SimpleTextOutputProtocol, mode_number: usize, columns: *usize, rows: *usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_mode: *const fn ( self: *SimpleTextOutputProtocol, mode_number: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_attribute: *const fn ( self: *SimpleTextOutputProtocol, attribute: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, clear_screen: *const fn ( self: *SimpleTextOutputProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_cursor_position: *const fn ( self: *SimpleTextOutputProtocol, column: usize, row: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, enable_cursor: *const fn ( self: *SimpleTextOutputProtocol, visible: bool, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, mode: *SimpleTextOutputMode, }; diff --git a/hikari/efi/protocols/simple_unit_system.zig b/hikari/efi/protocols/simple_unit_system.zig index 73cce41..fd19aa2 100644 --- a/hikari/efi/protocols/simple_unit_system.zig +++ b/hikari/efi/protocols/simple_unit_system.zig @@ -1,5 +1,6 @@ //! Hikari EFI Simple Unit System Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const unit = @import("unit.zig"); @@ -9,5 +10,5 @@ pub const SimpleUnitSystemProtocol = extern struct { open_volume: *const fn ( self: *SimpleUnitSystemProtocol, root: **unit.UnitProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; diff --git a/hikari/efi/protocols/unit.zig b/hikari/efi/protocols/unit.zig index 1bb9cb4..6a7dca7 100644 --- a/hikari/efi/protocols/unit.zig +++ b/hikari/efi/protocols/unit.zig @@ -1,5 +1,6 @@ //! Hikari EFI Unit Protocol +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); pub const UnitProtocol = extern struct { @@ -11,55 +12,55 @@ pub const UnitProtocol = extern struct { unit_name: [*:0]const types.Char16, open_mode: u64, attributes: u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, close: *const fn ( self: *UnitProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, delete: *const fn ( self: *UnitProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, read: *const fn ( self: *UnitProtocol, buffer_size: *usize, buffer: [*]u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, write: *const fn ( self: *UnitProtocol, buffer_size: *usize, buffer: [*]const u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_position: *const fn ( self: *UnitProtocol, position: *u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_position: *const fn ( self: *UnitProtocol, position: u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_info: *const fn ( self: *UnitProtocol, information_type: *align(8) const types.Guid, buffer_size: *usize, buffer: [*]u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_info: *const fn ( self: *UnitProtocol, information_type: *align(8) const types.Guid, buffer_size: usize, buffer: [*]const u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, flush: *const fn ( self: *UnitProtocol, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, open_ex: *const fn ( self: *UnitProtocol, @@ -68,22 +69,22 @@ pub const UnitProtocol = extern struct { open_mode: u64, attributes: u64, token: *UnitIoToken, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, read_ex: *const fn ( self: *UnitProtocol, token: *UnitIoToken, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, write_ex: *const fn ( self: *UnitProtocol, token: *UnitIoToken, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, flush_ex: *const fn ( self: *UnitProtocol, token: *UnitIoToken, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; pub const UnitIoToken = extern struct { diff --git a/hikari/efi/services/boot.zig b/hikari/efi/services/boot.zig index 6964896..d18528b 100644 --- a/hikari/efi/services/boot.zig +++ b/hikari/efi/services/boot.zig @@ -1,5 +1,6 @@ //! Hikari EFI Boot Services +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const table = @import("../types/table.zig"); const memory = @import("../types/memory.zig"); @@ -7,20 +8,20 @@ const memory = @import("../types/memory.zig"); pub const BootServices = extern struct { header: table.TableHeader, - raise_tpl: *const fn (new_tpl: usize) callconv(.C) usize, - restore_tpl: *const fn (old_tpl: usize) callconv(.C) void, + raise_tpl: *const fn (new_tpl: usize) callconv(efi.akiba) usize, + restore_tpl: *const fn (old_tpl: usize) callconv(efi.akiba) void, allocate_pages: *const fn ( allocate_type: memory.AllocateType, memory_type: memory.MemoryType, pages: usize, physical_address: *types.PhysicalAddress, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, free_pages: *const fn ( physical_address: types.PhysicalAddress, pages: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_memory_map: *const fn ( memory_map_size: *usize, @@ -28,75 +29,75 @@ pub const BootServices = extern struct { map_key: *usize, descriptor_size: *usize, descriptor_version: *u32, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, allocate_pool: *const fn ( pool_type: memory.MemoryType, size: usize, buffer: *[*]align(8) u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, free_pool: *const fn ( buffer: [*]align(8) u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, create_event: *const fn ( event_type: u32, notify_tpl: usize, - notify_function: ?*const fn (types.Event, ?*anyopaque) callconv(.C) void, + notify_function: ?*const fn (types.Event, ?*anyopaque) callconv(efi.akiba) void, notify_context: ?*anyopaque, event: *types.Event, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_timer: *const fn ( event: types.Event, timer_type: TimerDelay, trigger_time: u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, wait_for_event: *const fn ( number_of_events: usize, events: [*]const types.Event, index: *usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, signal_event: *const fn ( event: types.Event, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, close_event: *const fn ( event: types.Event, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, check_event: *const fn ( event: types.Event, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, install_protocol_interface: *const fn ( handle: *types.Handle, protocol: *align(8) const types.Guid, interface_type: InterfaceType, interface: ?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, reinstall_protocol_interface: *const fn ( handle: types.Handle, protocol: *align(8) const types.Guid, old_interface: ?*anyopaque, new_interface: ?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, uninstall_protocol_interface: *const fn ( handle: types.Handle, protocol: *align(8) const types.Guid, interface: ?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, handle_protocol: *const fn ( handle: types.Handle, protocol: *align(8) const types.Guid, interface: *?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, reserved: *anyopaque, @@ -104,7 +105,7 @@ pub const BootServices = extern struct { protocol: *align(8) const types.Guid, event: types.Event, registration: **anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, locate_handle: *const fn ( search_type: memory.LocateSearchType, @@ -112,18 +113,18 @@ pub const BootServices = extern struct { search_key: ?*anyopaque, buffer_size: *usize, buffer: [*]types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, locate_device_location: *const fn ( protocol: *align(8) const types.Guid, device_location: **anyopaque, device: *types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, install_configuration_table: *const fn ( guid: *align(8) const types.Guid, table_ptr: ?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, load_image: *const fn ( boot_policy: bool, @@ -132,57 +133,57 @@ pub const BootServices = extern struct { source_buffer: ?[*]const u8, source_size: usize, image_handle: *types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, start_image: *const fn ( image_handle: types.Handle, exit_data_size: *usize, exit_data: ?*[*]types.Char16, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, exit: *const fn ( image_handle: types.Handle, exit_status: types.Status, exit_data_size: usize, exit_data: ?[*]const types.Char16, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, unload_image: *const fn ( image_handle: types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, exit_boot_services: *const fn ( image_handle: types.Handle, map_key: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_next_monotonic_count: *const fn ( count: *u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, stall: *const fn ( microseconds: usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_watchdog_timer: *const fn ( timeout: usize, watchdog_code: u64, data_size: usize, watchdog_data: ?[*]const types.Char16, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, connect_controller: *const fn ( controller_handle: types.Handle, driver_image_handle: ?types.Handle, remaining_device_location: ?*anyopaque, recursive: bool, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, disconnect_controller: *const fn ( controller_handle: types.Handle, driver_image_handle: ?types.Handle, child_handle: ?types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, open_protocol: *const fn ( handle: types.Handle, @@ -191,27 +192,27 @@ pub const BootServices = extern struct { agent_handle: ?types.Handle, controller_handle: ?types.Handle, attributes: u32, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, close_protocol: *const fn ( handle: types.Handle, protocol: *align(8) const types.Guid, agent_handle: types.Handle, controller_handle: ?types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, open_protocol_information: *const fn ( handle: types.Handle, protocol: *align(8) const types.Guid, entry_buffer: *[*]OpenProtocolInformationEntry, entry_count: *usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, protocols_per_handle: *const fn ( handle: types.Handle, protocol_buffer: *[*]*align(8) types.Guid, protocol_buffer_count: *usize, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, locate_handle_buffer: *const fn ( search_type: memory.LocateSearchType, @@ -219,13 +220,13 @@ pub const BootServices = extern struct { search_key: ?*anyopaque, handle_count: *usize, buffer: *[*]types.Handle, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, locate_protocol: *const fn ( protocol: *align(8) const types.Guid, registration: ?*anyopaque, interface: *?*anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, install_multiple_protocol_interfaces: *const anyopaque, uninstall_multiple_protocol_interfaces: *const anyopaque, @@ -234,28 +235,28 @@ pub const BootServices = extern struct { data: [*]const u8, data_size: usize, crc32: *u32, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, copy_memory: *const fn ( destination: [*]u8, source: [*]const u8, length: usize, - ) callconv(.C) void, + ) callconv(efi.akiba) void, set_memory: *const fn ( buffer: [*]u8, size: usize, value: u8, - ) callconv(.C) void, + ) callconv(efi.akiba) void, create_event_ex: *const fn ( event_type: u32, notify_tpl: usize, - notify_function: ?*const fn (types.Event, ?*anyopaque) callconv(.C) void, + notify_function: ?*const fn (types.Event, ?*anyopaque) callconv(efi.akiba) void, notify_context: ?*const anyopaque, event_group: ?*align(8) const types.Guid, event: *types.Event, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; pub const TimerDelay = enum(u32) { diff --git a/hikari/efi/services/runtime.zig b/hikari/efi/services/runtime.zig index add3277..47ba790 100644 --- a/hikari/efi/services/runtime.zig +++ b/hikari/efi/services/runtime.zig @@ -1,5 +1,6 @@ //! Hikari EFI Runtime Services +const efi = @import("../efi.zig"); const types = @import("../types/types.zig"); const table = @import("../types/table.zig"); const time = @import("../types/time.zig"); @@ -12,34 +13,34 @@ pub const RuntimeServices = extern struct { get_time: *const fn ( current_time: *time.Time, capabilities: ?*time.TimeCapabilities, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_time: *const fn ( new_time: *const time.Time, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_wakeup_time: *const fn ( enabled: *bool, pending: *bool, wakeup_time: *time.Time, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_wakeup_time: *const fn ( enable: bool, wakeup_time: ?*const time.Time, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_virtual_address_map: *const fn ( memory_map_size: usize, descriptor_size: usize, descriptor_version: u32, virtual_map: [*]memory.MemoryDescriptor, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, convert_pointer: *const fn ( debug_disposition: usize, address: **anyopaque, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_variable: *const fn ( variable_name: [*:0]const types.Char16, @@ -47,13 +48,13 @@ pub const RuntimeServices = extern struct { attributes: ?*u32, data_size: *usize, data: ?[*]u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_next_variable_name: *const fn ( variable_name_size: *usize, variable_name: [*:0]types.Char16, vendor_guid: *align(8) types.Guid, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, set_variable: *const fn ( variable_name: [*:0]const types.Char16, @@ -61,38 +62,38 @@ pub const RuntimeServices = extern struct { attributes: u32, data_size: usize, data: [*]const u8, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, get_next_high_monotonic_count: *const fn ( high_count: *u32, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, reset_system: *const fn ( reset_type: reset.ResetType, reset_status: types.Status, data_size: usize, reset_data: ?*const anyopaque, - ) callconv(.C) noreturn, + ) callconv(efi.akiba) noreturn, update_capsule: *const fn ( capsule_header_array: **CapsuleHeader, capsule_count: usize, scatter_gather_list: types.PhysicalAddress, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, query_capsule_capabilities: *const fn ( capsule_header_array: **CapsuleHeader, capsule_count: usize, maximum_capsule_size: *u64, reset_type: *reset.ResetType, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, query_variable_info: *const fn ( attributes: u32, maximum_variable_storage_size: *u64, remaining_variable_storage_size: *u64, maximum_variable_size: *u64, - ) callconv(.C) types.Status, + ) callconv(efi.akiba) types.Status, }; pub const CapsuleHeader = extern struct { diff --git a/hikari/hikari.zig b/hikari/hikari.zig index c1c03ea..1a3d12a 100644 --- a/hikari/hikari.zig +++ b/hikari/hikari.zig @@ -3,6 +3,7 @@ //! Hikari loads the Mirai kernel from the AFS partition and //! transfers control with boot parameters. +const std = @import("std"); const efi = @import("efi/efi.zig"); const disk = @import("disk/disk.zig"); const fs = @import("fs/fs.zig"); @@ -16,7 +17,13 @@ const asm_ops = @import("asm/asm.zig"); const kernel_location = "/system/akiba/mirai.kernel"; const font_location = "/system/akiba/fonts/akiba.psf"; -pub fn hikari(image_handle: efi.types.Handle, system_table: *efi.services.SystemTable) callconv(.C) efi.types.Status { +pub fn main() void { + const image_handle: efi.types.Handle = @ptrCast(std.os.uefi.handle); + const system_table: *efi.services.SystemTable = @ptrCast(std.os.uefi.system_table); + _ = hikari(image_handle, system_table); +} + +fn hikari(image_handle: efi.types.Handle, system_table: *efi.services.SystemTable) efi.types.Status { const boot_services = system_table.boot_services; const console = system_table.console_output; |
