1
0
mirror of https://github.com/taigrr/gopher-os synced 2025-01-18 04:43:13 -08:00

110 Commits

Author SHA1 Message Date
Achilleas Anagnostopoulos
b72725742a Revise console interface 2017-07-07 06:25:24 +01:00
Achilleas Anagnostopoulos
425ad7319b Define driver interface
This interface must be implemented by all device drivers in the driver
sub-packages.
2017-07-07 06:25:24 +01:00
Achilleas Anagnostopoulos
d8793bd530 Move kernel panic implementation to the kfmt package 2017-07-07 06:25:24 +01:00
Achilleas Anagnostopoulos
dc37e86421 Run the init() function for all kernel packages and their dependencies
Things like error messages (e.g in the io pkg) are actually allocated
when init() is executed. Unless we trigger a call to init(), values like
this will be nil causing various problems when we try to use functions
from the stdlib.
2017-07-07 06:25:24 +01:00
Achilleas Anagnostopoulos
a1d65d4c09 Setup fs register according to the ELF TLS handling manual for x86-64
According to the ELF runtime handling of TLS document, the x86-64 arch
uses the same TLS handling variant (GNU) as the IA-32 ABI with the
exception that pointers are 8-byte wide and that the gs register is
swapped with fs. fs:0x0 points to the TCB; TLS variables are located
before it and are accessed using negative offsets from the TCB pointer.
In the Go case the G struct is accessed at fs:-0x8.

For more detauls see: https://www.akkadia.org/drepper/tls.pdf
2017-07-07 06:25:04 +01:00
Achilleas Anagnostopoulos
0bbaa1dbff Use correct FP offset for fetching the values passed to cpu.PortWriteXXX 2017-07-05 17:09:19 +01:00
Achilleas Anagnostopoulos
40521f8626 Ensure that the memory returned by sysAlloc is always zeroed 2017-07-05 16:50:59 +01:00
Achilleas Anagnostopoulos
4f3312b85d Implement functions for reading/writing from/to IO ports 2017-07-02 19:21:09 +01:00
Achilleas Anagnostopoulos
e4879b9f8a Support the CPUID instruction 2017-07-02 19:21:04 +01:00
Achilleas Anagnostopoulos
8dfc5d4e92 Use pwd as a workspace; move sources to src/gopheros and rewrite imports
By setting up pwd as a Go workspace, we can trim import paths from
something like "github.com/achilleasa/gopher-os/kernel" to just
"kernel".

These changes make forking easier and also allows us to move the code to
a different git hosting provider without having to rewrite the imports.
2017-07-01 20:37:09 +01:00