diff options
Diffstat (limited to 'src/arch/i386/boot/acpigen.c')
-rw-r--r-- | src/arch/i386/boot/acpigen.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/arch/i386/boot/acpigen.c b/src/arch/i386/boot/acpigen.c index 6342a69572..53bf6d0841 100644 --- a/src/arch/i386/boot/acpigen.c +++ b/src/arch/i386/boot/acpigen.c @@ -97,6 +97,21 @@ int acpigen_write_dword(unsigned int data) return 5; } +int acpigen_write_qword(uint64_t data) +{ + /* qword op */ + acpigen_emit_byte(0xe); + acpigen_emit_byte(data & 0xff); + acpigen_emit_byte((data >> 8) & 0xff); + acpigen_emit_byte((data >> 16) & 0xff); + acpigen_emit_byte((data >> 24) & 0xff); + acpigen_emit_byte((data >> 32) & 0xff); + acpigen_emit_byte((data >> 40) & 0xff); + acpigen_emit_byte((data >> 48) & 0xff); + acpigen_emit_byte((data >> 56) & 0xff); + return 9; +} + int acpigen_write_name_byte(char *name, uint8_t val) { int len; len = acpigen_write_name(name); @@ -111,6 +126,13 @@ int acpigen_write_name_dword(char *name, uint32_t val) { return len; } +int acpigen_write_name_qword(char *name, uint64_t val) { + int len; + len = acpigen_write_name(name); + len += acpigen_write_qword(val); + return len; +} + int acpigen_emit_stream(char *data, int size) { int i; for (i = 0; i < size; i++) { |