aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hikari/efi/efi.zig4
-rw-r--r--hikari/efi/protocols/block_io.zig9
-rw-r--r--hikari/efi/protocols/disk_io.zig5
-rw-r--r--hikari/efi/protocols/graphics_output.zig7
-rw-r--r--hikari/efi/protocols/loaded_image.zig3
-rw-r--r--hikari/efi/protocols/protocols.zig12
-rw-r--r--hikari/efi/protocols/simple_text_input.zig5
-rw-r--r--hikari/efi/protocols/simple_text_output.zig19
-rw-r--r--hikari/efi/protocols/simple_unit_system.zig3
-rw-r--r--hikari/efi/protocols/unit.zig29
-rw-r--r--hikari/efi/services/boot.zig87
-rw-r--r--hikari/efi/services/runtime.zig29
-rw-r--r--hikari/hikari.zig9
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;