Hey,
ich bin gerade dabei die Speicehrverwaltung zu schreiben und hab jetzt ein mathematisches Problem. Eine physische Adresse berechne ich so:
(i * 32 + i2) * 4096 = PhysAddr
i steht in dem Fall für den 32Bit Eintrags des Arrays und i2 für die Bitposition in dem Eintrag.
Das klappt auch so ganz gut. Durch umstellen erhalte ich für i2
i2 = PhysAddr/4096 - (i * 32)
Das klappt auchganz gut allerdings nur wenn ich von pmm_alloc (genau 4k Adressen) damit auflöse, also 0x1000, 0x2000, 0x3000 usw...
Was mach ich wen ich jetzt allerdings ne Adresse habe wie 0x1021 oder so. Wie berechne ich dafür die Bitposition in der Bitmap und den entsprechenden Eintrag im Array?
mfg Sebi
ich bin gerade dabei die Speicehrverwaltung zu schreiben und hab jetzt ein mathematisches Problem. Eine physische Adresse berechne ich so:
(i * 32 + i2) * 4096 = PhysAddr
i steht in dem Fall für den 32Bit Eintrags des Arrays und i2 für die Bitposition in dem Eintrag.
Das klappt auch so ganz gut. Durch umstellen erhalte ich für i2
i2 = PhysAddr/4096 - (i * 32)
Das klappt auchganz gut allerdings nur wenn ich von pmm_alloc (genau 4k Adressen) damit auflöse, also 0x1000, 0x2000, 0x3000 usw...
Was mach ich wen ich jetzt allerdings ne Adresse habe wie 0x1021 oder so. Wie berechne ich dafür die Bitposition in der Bitmap und den entsprechenden Eintrag im Array?
mfg Sebi

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
