@@ -16,46 +16,6 @@ use super::page::{LinkedList, Page, PageFlags, MAX_ORDER, PAGE_SHIFT, PAGE_SIZE}
1616use crate :: sync:: spinlock:: SpinLock ;
1717use core:: ptr;
1818
19- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
20- fn qemu_virt64_aarch64_uart_puts ( s : & str ) {
21- const UART_DR : usize = 0x00 ;
22- const UART_FR : usize = 0x18 ;
23- const UART_FR_TXFF : u32 = 1 << 5 ;
24-
25- let uart_base = crate :: boards:: config:: PL011_UART0_BASE as * mut u8 ;
26- for byte in s. bytes ( ) {
27- unsafe {
28- while ptr:: read_volatile ( uart_base. add ( UART_FR ) as * const u32 ) & UART_FR_TXFF != 0 { }
29- ptr:: write_volatile ( uart_base. add ( UART_DR ) , byte) ;
30- }
31- }
32- }
33-
34- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
35- fn qemu_virt64_aarch64_uart_put_hex ( value : usize ) {
36- const HEX : & [ u8 ; 16 ] = b"0123456789abcdef" ;
37-
38- qemu_virt64_aarch64_uart_puts ( "0x" ) ;
39-
40- let mut started = false ;
41- for shift in ( 0 ..usize:: BITS ) . step_by ( 4 ) . rev ( ) {
42- let digit = ( ( value >> shift) & 0xf ) as usize ;
43- if digit != 0 || started || shift == 0 {
44- started = true ;
45- let byte = HEX [ digit] ;
46- unsafe {
47- const UART_DR : usize = 0x00 ;
48- const UART_FR : usize = 0x18 ;
49- const UART_FR_TXFF : u32 = 1 << 5 ;
50-
51- let uart_base = crate :: boards:: config:: PL011_UART0_BASE as * mut u8 ;
52- while ptr:: read_volatile ( uart_base. add ( UART_FR ) as * const u32 ) & UART_FR_TXFF != 0 { }
53- ptr:: write_volatile ( uart_base. add ( UART_DR ) , byte) ;
54- }
55- }
56- }
57- }
58-
5919extern "C" {
6020 static mut _end: u8 ;
6121}
@@ -148,29 +108,11 @@ impl BuddyAllocatorCore {
148108 /// 5. Add remaining free pages to free lists as largest possible aligned blocks.
149109 /// Each block starts at a pfn aligned to its size (buddy invariant).
150110 pub unsafe fn init ( & mut self , phys_mem_start : usize , phys_mem_end : usize ) {
151- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
152- {
153- qemu_virt64_aarch64_uart_puts ( "hello from buddy::heap.rs::init phys_mem_start=" ) ;
154- qemu_virt64_aarch64_uart_put_hex ( phys_mem_start) ;
155- qemu_virt64_aarch64_uart_puts ( " phys_mem_end=" ) ;
156- qemu_virt64_aarch64_uart_put_hex ( phys_mem_end) ;
157- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
158- }
159111
160112 self . base_addr = phys_mem_start;
161113 self . total_pages = ( phys_mem_end - phys_mem_start) >> PAGE_SHIFT ;
162114 self . end_pfn = self . total_pages ;
163115
164- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
165- {
166- qemu_virt64_aarch64_uart_puts ( "total_pages=" ) ;
167- qemu_virt64_aarch64_uart_put_hex ( self . total_pages ) ;
168- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
169- qemu_virt64_aarch64_uart_puts ( "end_pfn=" ) ;
170- qemu_virt64_aarch64_uart_put_hex ( self . end_pfn ) ;
171- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
172- }
173-
174116 // Reserve space for struct Page[total_pages] after the kernel image and static heap.
175117 let virt_mem_start = kernel_phys_to_virt_addr ( phys_mem_start) ;
176118 let mut virt_page_array_start = crate :: support:: align_up_size (
@@ -183,50 +125,16 @@ impl BuddyAllocatorCore {
183125 let page_array_size = self . total_pages * core:: mem:: size_of :: < Page > ( ) ;
184126 let virt_page_array_end = virt_page_array_start + page_array_size;
185127
186- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
187- {
188- qemu_virt64_aarch64_uart_puts ( "core::mem::size_of::<Page>()=" ) ;
189- qemu_virt64_aarch64_uart_put_hex ( core:: mem:: size_of :: < Page > ( ) ) ;
190- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
191- qemu_virt64_aarch64_uart_puts ( "virt_page_array_start=" ) ;
192- qemu_virt64_aarch64_uart_put_hex ( virt_page_array_start) ;
193- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
194- qemu_virt64_aarch64_uart_puts ( "page_array_size=" ) ;
195- qemu_virt64_aarch64_uart_put_hex ( page_array_size) ;
196- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
197- qemu_virt64_aarch64_uart_puts ( "virt_page_array_end=" ) ;
198- qemu_virt64_aarch64_uart_put_hex ( virt_page_array_end) ;
199- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
200- }
201-
202128 // Align metadata end up to PAGE_SIZE boundary.
203129 let virt_metadata_end = crate :: support:: align_up_size ( virt_page_array_end, PAGE_SIZE ) ;
204130 let phys_metadata_end = kernel_virt_to_phys_addr ( virt_metadata_end) ;
205131 assert ! ( phys_metadata_end <= phys_mem_end) ;
206132 self . start_pfn = ( phys_metadata_end - phys_mem_start) >> PAGE_SHIFT ;
207133
208- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
209- {
210- qemu_virt64_aarch64_uart_puts ( "virt_metadata_end=" ) ;
211- qemu_virt64_aarch64_uart_put_hex ( virt_metadata_end) ;
212- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
213- qemu_virt64_aarch64_uart_puts ( "phys_metadata_end=" ) ;
214- qemu_virt64_aarch64_uart_put_hex ( phys_metadata_end) ;
215- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
216- qemu_virt64_aarch64_uart_puts ( "start_pfn=" ) ;
217- qemu_virt64_aarch64_uart_put_hex ( self . start_pfn ) ;
218- qemu_virt64_aarch64_uart_puts ( "\n " ) ;
219- }
220-
221134 // Zero the entire page descriptor array / struct Page array.
222135 core:: ptr:: write_bytes ( virt_page_array_start as * mut u8 , 0 , page_array_size) ;
223136 self . pages = virt_page_array_start as * mut Page ;
224137
225- #[ cfg( target_board = "qemu_virt64_aarch64" ) ]
226- {
227- qemu_virt64_aarch64_uart_puts ( "guess reach here\n " ) ;
228- }
229-
230138 // Initialize each page descriptor / struct Page.
231139 for pfn in 0 ..self . total_pages {
232140 let page = & mut * self . pages . add ( pfn) ;
0 commit comments