Changeset ac5d02b in mainline
- Timestamp:
- 2005-06-03T13:17:05Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 70527f1
- Parents:
- dcbc8be
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia32/_link.ld
rdcbc8be rac5d02b 13 13 14 14 SECTIONS { 15 .unmapped 0x8000: AT (0x8000) { 16 unmapped_ktext_start = .; 17 *(K_TEXT_START); 18 unmapped_ktext_end = .; 19 unmapped_kdata_start = .; 20 *(K_DATA_START); 21 unmapped_kdata_end = .; 22 } 23 24 .mapped (0x80000000+SIZEOF(.unmapped)+0x8000) : AT (0x8000+SIZEOF(.unmapped)) { 25 ktext_start = .; 26 *(.text); 27 ktext_end = .; 15 .unmapped 0x8000: AT (0x8000) { 16 unmapped_ktext_start = .; 17 *(K_TEXT_START); 18 unmapped_ktext_end = .; 19 unmapped_kdata_start = .; 20 *(K_DATA_START); 21 unmapped_kdata_end = .; 22 } 28 23 29 kdata_start = .; 30 *(.data); /* initialized data */ 31 *(.rodata*); /* string literals */ 32 *(COMMON); /* global variables */ 33 *(.bss); /* uninitialized static variables */ 34 *(K_DATA_END); 35 kdata_end = .; 36 } 24 .mapped (0x80000000+SIZEOF(.unmapped)+0x8000) : AT (0x8000+SIZEOF(.unmapped)) { 25 ktext_start = .; 26 *(.text); 27 ktext_end = .; 37 28 38 _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start); 39 _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start); 40 _hardcoded_load_address = 0x80008000; 29 kdata_start = .; 30 *(.data); /* initialized data */ 31 *(.rodata*); /* string literals */ 32 *(COMMON); /* global variables */ 33 *(.bss); /* uninitialized static variables */ 34 *(K_DATA_END); 35 kdata_end = .; 36 } 37 38 _hardcoded_ktext_size = ktext_end - ktext_start + (unmapped_ktext_end - unmapped_ktext_start); 39 _hardcoded_kdata_size = kdata_end - kdata_start + (unmapped_kdata_end - unmapped_kdata_start); 40 _hardcoded_load_address = 0x80008000; 41 41 42 42 } -
arch/ia32/include/mm/vm.h
rdcbc8be rac5d02b 38 38 39 39 #define UTEXT_ADDRESS_ARCH 0x00001000 40 #define USTACK_ADDRESS_ARCH (0x7fffffff UL-(PAGE_SIZE-1))40 #define USTACK_ADDRESS_ARCH (0x7fffffff-(PAGE_SIZE-1)) 41 41 #define UDATA_ADDRESS_ARCH 0x21000000 42 42 -
arch/ia32/src/asm.s
rdcbc8be rac5d02b 445 445 446 446 447 .section K_DATA_START447 #.section K_DATA_START 448 448 .global interrupt_handler_size 449 449 -
arch/ia32/src/drivers/ega.c
rdcbc8be rac5d02b 48 48 __u8 hi, lo; 49 49 50 map_page_to_frame( VIDEORAM, VIDEORAM, PAGE_NOT_CACHEABLE, 0);50 map_page_to_frame(PA2KA(VIDEORAM), VIDEORAM, PAGE_NOT_CACHEABLE, 0); 51 51 outb(0x3d4,0xe); 52 52 hi = inb(0x3d5); … … 59 59 void ega_display_char(char ch) 60 60 { 61 __u8 *vram = (__u8 *) VIDEORAM;61 __u8 *vram = (__u8 *) PA2KA(VIDEORAM); 62 62 63 63 vram[ega_cursor*2] = ch; … … 72 72 return; 73 73 74 memcopy( VIDEORAM + ROW*2, VIDEORAM, (SCREEN - ROW)*2);75 memsetw( VIDEORAM+ (SCREEN - ROW)*2, ROW, 0x0720);74 memcopy(PA2KA(VIDEORAM) + ROW*2, PA2KA(VIDEORAM), (SCREEN - ROW)*2); 75 memsetw(PA2KA(VIDEORAM) + (SCREEN - ROW)*2, ROW, 0x0720); 76 76 ega_cursor = ega_cursor - ROW; 77 77 } -
arch/ia32/src/mm/page.c
rdcbc8be rac5d02b 36 36 #include <arch/asm.h> 37 37 #include <synch/spinlock.h> 38 #include <debug.h> 38 39 39 40 /* … … 54 55 55 56 if (config.cpu_active == 1) { 56 dba = KA2PA(frame_alloc(FRAME_KA | FRAME_PANIC));57 dba = frame_alloc(FRAME_KA | FRAME_PANIC); 57 58 memsetb(dba, PAGE_SIZE, 0); 58 59 … … 69 70 70 71 trap_register(14, page_fault); 71 cpu_write_dba( dba);72 cpu_write_dba(KA2PA(dba)); 72 73 } 73 74 else { … … 82 83 dba = frame_alloc(FRAME_KA | FRAME_PANIC); 83 84 memcopy(bootstrap_dba, dba, PAGE_SIZE); 84 cpu_write_dba( dba);85 cpu_write_dba(KA2PA(dba)); 85 86 } 86 87 … … 122 123 * frame for the page table and clean it. 123 124 */ 124 newpt = KA2PA(frame_alloc(FRAME_KA));125 pd[pde].frame_address = newpt>> 12;125 newpt = frame_alloc(FRAME_KA); 126 pd[pde].frame_address = KA2PA(newpt) >> 12; 126 127 memsetb(newpt, PAGE_SIZE, 0); 127 128 pd[pde].present = 1; … … 129 130 } 130 131 if (copy) { 131 newpt = KA2PA(frame_alloc(FRAME_KA));132 newpt = frame_alloc(FRAME_KA); 132 133 memcopy(pd[pde].frame_address << 12, newpt, PAGE_SIZE); 133 pd[pde].frame_address = newpt>> 12;134 pd[pde].frame_address = KA2PA(newpt) >> 12; 134 135 } 135 136 -
arch/ia32/src/userspace.c
rdcbc8be rac5d02b 53 53 "pushl %4\n" 54 54 "iret" 55 : : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+ THREAD_STACK_SIZE-1000), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS));55 : : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+(THREAD_STACK_SIZE-1)), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS)); 56 56 57 57 /* Unreachable */ -
arch/ia64/_link.ld
rdcbc8be rac5d02b 12 12 13 13 SECTIONS { 14 .image 0x0000000000001000: AT (0x0000000000001000) { 15 *(K_TEXT_START) 16 *(.text .stub .text.* .gnu.linkonce.t.*) 17 *(.interp) 18 *(.hash) 19 *(.dynsym) 20 *(.dynstr) 21 *(.rel.init) 22 *(.rela.init) 23 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) 24 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) 25 *(.rel.fini) 26 *(.rela.fini) 27 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) 28 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) 29 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) 30 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) 31 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) 32 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) 33 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) 34 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) 35 *(.rel.got) 36 *(.rela.got) 37 *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) 38 *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) 39 *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) 40 *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) 41 *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) 42 *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) 43 *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) 44 *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) 45 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) 46 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) 47 *(.rel.plt) 48 *(.rela.plt) 49 *(.rela.IA_64.pltoff) 50 *(.init) 51 *(.plt) 52 *(.fini) 53 *(K_TEXT_END) 54 *(K_DATA_START) 55 *(.rodata .rodata.* .gnu.linkonce.r.*) 56 *(.rodata1) 57 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) 58 *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) 59 *(.opd) 60 *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) 61 *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) 62 *(.eh_frame_hdr) 63 *(.preinit_array) 64 *(.init_array) 65 *(.fini_array) 66 *(.data .data.* .gnu.linkonce.d.*) 67 *(.data1) 68 *(.tdata .tdata.* .gnu.linkonce.td.*) 69 *(.tcommon) 70 *(.eh_frame) 71 *(.gcc_except_table) 72 *(.dynamic) 73 *(.jcr) 74 *(.got) 75 *(.IA_64.pltoff) 76 *(.sdata .sdata.* .gnu.linkonce.s.*) 77 *(.dynsbss) 78 *(.sbss .sbss.* .gnu.linkonce.sb.*) 79 *(.scommon) 80 *(.dynbss) 81 *(.bss .bss.* .gnu.linkonce.b.*) 82 *(COMMON); 83 *(K_DATA_END) 84 } 14 .image 0x0000000000001000: AT (0x0000000000001000) { 15 ktext_start = .; 16 *(K_TEXT_START); 17 *(.text .stub .text.* .gnu.linkonce.t.*) 18 *(.interp) 19 *(.hash) 20 *(.dynsym) 21 *(.dynstr) 22 *(.rel.init) 23 *(.rela.init) 24 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) 25 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) 26 *(.rel.fini) 27 *(.rela.fini) 28 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) 29 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) 30 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) 31 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) 32 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) 33 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) 34 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) 35 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) 36 *(.rel.got) 37 *(.rela.got) 38 *(.rel.sdata .rel.sdata.* .rel.gnu.linkonce.s.*) 39 *(.rela.sdata .rela.sdata.* .rela.gnu.linkonce.s.*) 40 *(.rel.sbss .rel.sbss.* .rel.gnu.linkonce.sb.*) 41 *(.rela.sbss .rela.sbss.* .rela.gnu.linkonce.sb.*) 42 *(.rel.sdata2 .rel.sdata2.* .rel.gnu.linkonce.s2.*) 43 *(.rela.sdata2 .rela.sdata2.* .rela.gnu.linkonce.s2.*) 44 *(.rel.sbss2 .rel.sbss2.* .rel.gnu.linkonce.sb2.*) 45 *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) 46 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) 47 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) 48 *(.rel.plt) 49 *(.rela.plt) 50 *(.rela.IA_64.pltoff) 51 *(.init) 52 *(.plt) 53 *(.fini) 54 ktext_end = .; 55 kdata_start = .; 56 *(K_DATA_START) 57 *(.rodata .rodata.* .gnu.linkonce.r.*) 58 *(.rodata1) 59 *(.sdata2 .sdata2.* .gnu.linkonce.s2.*) 60 *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*) 61 *(.opd) 62 *(.IA_64.unwind_info* .gnu.linkonce.ia64unwi.*) 63 *(.IA_64.unwind* .gnu.linkonce.ia64unw.*) 64 *(.eh_frame_hdr) 65 *(.preinit_array) 66 *(.init_array) 67 *(.fini_array) 68 *(.data .data.* .gnu.linkonce.d.*) 69 *(.data1) 70 *(.tdata .tdata.* .gnu.linkonce.td.*) 71 *(.tcommon) 72 *(.eh_frame) 73 *(.gcc_except_table) 74 *(.dynamic) 75 *(.jcr) 76 *(.got) 77 *(.IA_64.pltoff) 78 *(.sdata .sdata.* .gnu.linkonce.s.*) 79 *(.dynsbss) 80 *(.sbss .sbss.* .gnu.linkonce.sb.*) 81 *(.scommon) 82 *(.dynbss) 83 *(.bss .bss.* .gnu.linkonce.b.*) 84 *(COMMON); 85 kdata_end = .; 86 } 85 87 88 _hardcoded_ktext_size = ktext_end - ktext_start; 89 _hardcoded_kdata_size = kdata_end - kdata_start; 90 _hardcoded_load_address = 0x0000000000001000; 86 91 87 92 } -
arch/ia64/src/start.S
rdcbc8be rac5d02b 28 28 29 29 .section K_TEXT_START 30 .global k_text_start31 k_text_start:32 30 33 31 .global kernel_image_start … … 50 48 51 49 # initialize gp (Global Pointer) register 52 movl r1=k_text_start 50 movl r1 = _hardcoded_load_address 51 52 ;; 53 53 54 54 # 55 55 # Initialize hardcoded_* variables. 56 # (IA-64 port doesn't get these values from linker.)57 56 # 58 movl r8 = k_text_start ;; 59 movl r9 = k_text_end ;; 60 sub r8 = r9, r8 61 addl r10 = @gprel(hardcoded_ktext_size), gp;; 62 st4 [r10] = r8 ;; 63 64 movl r8 = k_data_start ;; 65 movl r9 = k_data_end ;; 66 sub r8 = r9, r8 67 addl r10 = @gprel(hardcoded_kdata_size), gp;; 68 st4 [r10] = r8 ;; 69 70 addl r10 = @gprel(hardcoded_load_address), gp;; 71 st8 [r10] = r1 57 movl r14 = _hardcoded_ktext_size 58 movl r15 = _hardcoded_kdata_size 59 movl r16 = _hardcoded_load_address 60 addl r17 = @gprel(hardcoded_ktext_size), gp 61 addl r18 = @gprel(hardcoded_kdata_size), gp 62 addl r19 = @gprel(hardcoded_load_address), gp 63 ;; 64 st4 [r17] = r14 65 st4 [r18] = r15 66 st8 [r19] = r16 72 67 73 68 br.call.sptk.many b0=main_bsp … … 75 70 0: 76 71 br 0b 77 78 .section K_TEXT_END79 .global k_text_end80 k_text_end:81 82 .section K_DATA_START83 .global k_data_start84 k_data_start:85 86 .section K_DATA_END87 .global k_data_end88 k_data_end: -
arch/mips/_link.ld
rdcbc8be rac5d02b 11 11 12 12 SECTIONS { 13 14 ktext_start = .;15 *(.text);16 ktext_end = .;13 .image 0x80000000: AT (0x80000000) { 14 ktext_start = .; 15 *(.text); 16 ktext_end = .; 17 17 18 kdata_start = .;19 *(.rdata);20 *(.data); /* initialized data */21 *(.lit8);22 *(.lit4);23 *(.sdata);24 *(.sbss);25 *(.bss); /* uninitialized static variables */26 *(.scommon);27 *(COMMON); /* global variables */28 kdata_end = .;18 kdata_start = .; 19 *(.rdata); 20 *(.data); /* initialized data */ 21 *(.lit8); 22 *(.lit4); 23 *(.sdata); 24 *(.sbss); 25 *(.bss); /* uninitialized static variables */ 26 *(.scommon); 27 *(COMMON); /* global variables */ 28 kdata_end = .; 29 29 30 30 } = 0x00000000 31 31 32 33 34 LONG(ktext_end - ktext_start);35 32 . = ABSOLUTE(hardcoded_ktext_size); 33 .patch_1 : { 34 LONG(ktext_end - ktext_start); 35 } 36 36 37 38 39 LONG(kdata_end - kdata_start);40 37 . = ABSOLUTE(hardcoded_kdata_size); 38 .patch_2 : { 39 LONG(kdata_end - kdata_start); 40 } 41 41 42 43 44 LONG(0x80000000);45 42 . = ABSOLUTE(hardcoded_load_address); 43 .patch_3 : { 44 LONG(0x80000000); 45 } 46 46 47 47 } -
src/main/main.c
rdcbc8be rac5d02b 56 56 #include <arch/faddr.h> 57 57 58 #include <typedefs.h> 59 58 60 char *project = "SPARTAN kernel"; 59 61 char *copyright = "Copyright (C) 2001-2005 Jakub Jermar\nCopyright (C) 2005 HelenOS project"; … … 68 70 */ 69 71 __address hardcoded_load_address = 0; 70 __u32hardcoded_ktext_size = 0;71 __u32hardcoded_kdata_size = 0;72 size_t hardcoded_ktext_size = 0; 73 size_t hardcoded_kdata_size = 0; 72 74 73 75 void main_bsp(void);
Note:
See TracChangeset
for help on using the changeset viewer.