diff --git a/kernel/mem/constants_amd64.go b/kernel/mem/constants_amd64.go index aea2911..068b23e 100644 --- a/kernel/mem/constants_amd64.go +++ b/kernel/mem/constants_amd64.go @@ -3,6 +3,10 @@ package mem const ( + // PointerShift is equal to log2(unsafe.Sizeof(uintptr)). The pointer + // size for this architecture is defined as (1 << PointerShift). + PointerShift = 3 + // PageShift is equal to log2(PageSize). This constant is used when // we need to convert a physical address to a page number (shift right by PageShift) // and vice-versa. diff --git a/kernel/mem/pmm/bootmem_allocator_test.go b/kernel/mem/pmm/bootmem_allocator_test.go index 8632b66..fc9d394 100644 --- a/kernel/mem/pmm/bootmem_allocator_test.go +++ b/kernel/mem/pmm/bootmem_allocator_test.go @@ -49,14 +49,6 @@ func TestBootMemoryAllocator(t *testing.T) { if !frame.IsValid() { t.Errorf("[frame %d] expected IsValid() to return true", allocFrameCount) } - - if got := frame.PageOrder(); got != mem.PageOrder(0) { - t.Errorf("[frame %d] expected allocated frame page order to be 0; got %d", allocFrameCount, got) - } - - if got := frame.Size(); got != mem.PageSize { - t.Errorf("[frame %d] expected allocated frame size to be %d; got %d", allocFrameCount, mem.PageSize, got) - } } if allocFrameCount != totalFreeFrames { diff --git a/kernel/mem/pmm/frame.go b/kernel/mem/pmm/frame.go index 478406c..5b03dce 100644 --- a/kernel/mem/pmm/frame.go +++ b/kernel/mem/pmm/frame.go @@ -8,7 +8,7 @@ import ( ) // Frame describes a physical memory page index. -type Frame uint64 +type Frame uintptr const ( // InvalidFrame is returned by page allocators when @@ -25,14 +25,3 @@ func (f Frame) IsValid() bool { func (f Frame) Address() uintptr { return uintptr(f << mem.PageShift) } - -// PageOrder returns the page order of this frame. The page order is encoded in the -// 8 MSB of the frame number. -func (f Frame) PageOrder() mem.PageOrder { - return mem.PageOrder((f >> 56) & 0xFF) -} - -// Size returns the size of this frame. -func (f Frame) Size() mem.Size { - return mem.PageSize << ((f >> 56) & 0xFF) -} diff --git a/kernel/mem/pmm/frame_test.go b/kernel/mem/pmm/frame_test.go index 786e465..990794c 100644 --- a/kernel/mem/pmm/frame_test.go +++ b/kernel/mem/pmm/frame_test.go @@ -15,17 +15,9 @@ func TestFrameMethods(t *testing.T) { t.Errorf("[order %d] expected frame %d to be valid", order, frameIndex) } - if got := frame.PageOrder(); got != order { - t.Errorf("[order %d] expected frame (%d, index: %d) call to PageOrder() to return %d; got %d", order, frame, frameIndex, order, got) - } - if exp, got := uintptr(frameIndex<