Bug 208050 - The boot loader forth does not understand 'outb' on the amd64 platform.
Summary: The boot loader forth does not understand 'outb' on the amd64 platform.
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: misc (show other bugs)
Version: CURRENT
Hardware: amd64 Any
: --- Affects Some People
Assignee: Devin Teske
URL:
Keywords: patch
Depends on:
Blocks:
 
Reported: 2016-03-16 05:14 UTC by K Staring
Modified: 2018-07-09 06:50 UTC (History)
1 user (show)

See Also:


Attachments
'outb' amd64 patch (2.43 KB, patch)
2016-03-16 05:14 UTC, K Staring
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description K Staring 2016-03-16 05:14:50 UTC
Created attachment 168280 [details]
'outb' amd64 patch

'outb (port char --)', according to loader(8), writes a value to a port.
However, it only does so on the i386 platform (and possibly non-x86 platforms, but this is outside of the scope of this report), ihe 'outb' word is not recognised on amd64.

One would expect this would also work on amd64.

A patch is supplied which enables 'outb' on amd64 also. Note that after the patch is applied, i386/sysdep.c and amd64/sysdep.c have the same contents.
Comment 1 Devin Teske freebsd_committer 2018-06-17 20:54:38 UTC
I'm unfamiliar with inb/outb, how might I use it for testing?
Comment 2 K Staring 2018-07-09 06:50:38 UTC
Its use was for me to be able to disable the discrete GPU at boot on my MacBook Pro with the following outb statements. However, since submitting this bug report I've changed laptops from the Apple to a Dell.

 outb 0x728 1
 outb 0x710 2
 outb 0x740 2
 outb 0x750 0

I don't know of any other use for outb in the bootloader and it's not at all required to be able to boot up a MacBook Pro, so its use is rather limited. More like a 'nice to have' since the man page mentions it, and on top of that, at the time I made the patch, the i386 and x86_64 sysdep.c files became identical when the patch was applied, allowing the possibility to have only one sysdep.c .