Subversion Repositories HelenOS-historic

Compare Revisions

Regard whitespace Rev 105 → Rev 106

/SPARTAN/trunk/src/main/main.c
55,6 → 55,8
#include <arch.h>
#include <arch/faddr.h>
 
#include <typedefs.h>
 
char *project = "SPARTAN kernel";
char *copyright = "Copyright (C) 2001-2005 Jakub Jermar\nCopyright (C) 2005 HelenOS project";
 
67,8 → 69,8
* appropriate sizes and addresses.
*/
__address hardcoded_load_address = 0;
__u32 hardcoded_ktext_size = 0;
__u32 hardcoded_kdata_size = 0;
size_t hardcoded_ktext_size = 0;
size_t hardcoded_kdata_size = 0;
 
void main_bsp(void);
void main_ap(void);
/SPARTAN/trunk/arch/ia64/src/start.S
27,8 → 27,6
#
 
.section K_TEXT_START
.global k_text_start
k_text_start:
 
.global kernel_image_start
 
49,40 → 47,25
add r12 = - 16, r12 /* allocate a scratch area on the stack */
 
# initialize gp (Global Pointer) register
movl r1=k_text_start
movl r1 = _hardcoded_load_address
 
;;
 
#
# Initialize hardcoded_* variables.
# (IA-64 port doesn't get these values from linker.)
#
movl r8 = k_text_start ;;
movl r9 = k_text_end ;;
sub r8 = r9, r8
addl r10 = @gprel(hardcoded_ktext_size), gp;;
st4 [r10] = r8 ;;
movl r14 = _hardcoded_ktext_size
movl r15 = _hardcoded_kdata_size
movl r16 = _hardcoded_load_address
addl r17 = @gprel(hardcoded_ktext_size), gp
addl r18 = @gprel(hardcoded_kdata_size), gp
addl r19 = @gprel(hardcoded_load_address), gp
;;
st4 [r17] = r14
st4 [r18] = r15
st8 [r19] = r16
 
movl r8 = k_data_start ;;
movl r9 = k_data_end ;;
sub r8 = r9, r8
addl r10 = @gprel(hardcoded_kdata_size), gp;;
st4 [r10] = r8 ;;
addl r10 = @gprel(hardcoded_load_address), gp;;
st8 [r10] = r1
br.call.sptk.many b0=main_bsp
 
0:
br 0b
 
.section K_TEXT_END
.global k_text_end
k_text_end:
 
.section K_DATA_START
.global k_data_start
k_data_start:
 
.section K_DATA_END
.global k_data_end
k_data_end:
/SPARTAN/trunk/arch/ia64/_link.ld
12,7 → 12,8
 
SECTIONS {
.image 0x0000000000001000: AT (0x0000000000001000) {
*(K_TEXT_START)
ktext_start = .;
*(K_TEXT_START);
*(.text .stub .text.* .gnu.linkonce.t.*)
*(.interp)
*(.hash)
50,7 → 51,8
*(.init)
*(.plt)
*(.fini)
*(K_TEXT_END)
ktext_end = .;
kdata_start = .;
*(K_DATA_START)
*(.rodata .rodata.* .gnu.linkonce.r.*)
*(.rodata1)
80,8 → 82,11
*(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*)
*(COMMON);
*(K_DATA_END)
kdata_end = .;
}
 
_hardcoded_ktext_size = ktext_end - ktext_start;
_hardcoded_kdata_size = kdata_end - kdata_start;
_hardcoded_load_address = 0x0000000000001000;
}
/SPARTAN/trunk/arch/ia32/include/mm/vm.h
37,7 → 37,7
#define USER_ADDRESS_SPACE_END_ARCH (__address) 0x7fffffff
 
#define UTEXT_ADDRESS_ARCH 0x00001000
#define USTACK_ADDRESS_ARCH (0x7fffffffUL-(PAGE_SIZE-1))
#define USTACK_ADDRESS_ARCH (0x7fffffff-(PAGE_SIZE-1))
#define UDATA_ADDRESS_ARCH 0x21000000
 
#endif
/SPARTAN/trunk/arch/ia32/src/asm.s
444,7 → 444,7
.long utext_end - utext
 
 
.section K_DATA_START
#.section K_DATA_START
.global interrupt_handler_size
 
interrupt_handler_size: .long (h_end-h_start)/IDT_ITEMS
/SPARTAN/trunk/arch/ia32/src/mm/page.c
35,6 → 35,7
#include <arch/interrupt.h>
#include <arch/asm.h>
#include <synch/spinlock.h>
#include <debug.h>
 
/*
* Note.
53,7 → 54,7
__u32 i;
 
if (config.cpu_active == 1) {
dba = KA2PA(frame_alloc(FRAME_KA | FRAME_PANIC));
dba = frame_alloc(FRAME_KA | FRAME_PANIC);
memsetb(dba, PAGE_SIZE, 0);
bootstrap_dba = dba;
68,7 → 69,7
}
 
trap_register(14, page_fault);
cpu_write_dba(dba);
cpu_write_dba(KA2PA(dba));
}
else {
 
81,7 → 82,7
 
dba = frame_alloc(FRAME_KA | FRAME_PANIC);
memcopy(bootstrap_dba, dba, PAGE_SIZE);
cpu_write_dba(dba);
cpu_write_dba(KA2PA(dba));
}
 
paging_on();
121,16 → 122,16
* There is currently no page table for this address. Allocate
* frame for the page table and clean it.
*/
newpt = KA2PA(frame_alloc(FRAME_KA));
pd[pde].frame_address = newpt >> 12;
newpt = frame_alloc(FRAME_KA);
pd[pde].frame_address = KA2PA(newpt) >> 12;
memsetb(newpt, PAGE_SIZE, 0);
pd[pde].present = 1;
pd[pde].uaccessible = 1;
}
if (copy) {
newpt = KA2PA(frame_alloc(FRAME_KA));
newpt = frame_alloc(FRAME_KA);
memcopy(pd[pde].frame_address << 12, newpt, PAGE_SIZE);
pd[pde].frame_address = newpt >> 12;
pd[pde].frame_address = KA2PA(newpt) >> 12;
}
pt = (struct page_specifier *) (pd[pde].frame_address << 12);
/SPARTAN/trunk/arch/ia32/src/userspace.c
52,7 → 52,7
"pushl %3\n"
"pushl %4\n"
"iret"
: : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+THREAD_STACK_SIZE-1000), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS));
: : "i" (selector(UDATA_DES) | PL_USER), "i" (USTACK_ADDRESS+(THREAD_STACK_SIZE-1)), "r" (pri), "i" (selector(UTEXT_DES) | PL_USER), "i" (UTEXT_ADDRESS));
/* Unreachable */
for(;;);
/SPARTAN/trunk/arch/ia32/src/drivers/ega.c
47,7 → 47,7
{
__u8 hi, lo;
 
map_page_to_frame(VIDEORAM, VIDEORAM, PAGE_NOT_CACHEABLE, 0);
map_page_to_frame(PA2KA(VIDEORAM), VIDEORAM, PAGE_NOT_CACHEABLE, 0);
outb(0x3d4,0xe);
hi = inb(0x3d5);
outb(0x3d4,0xf);
58,7 → 58,7
 
void ega_display_char(char ch)
{
__u8 *vram = (__u8 *) VIDEORAM;
__u8 *vram = (__u8 *) PA2KA(VIDEORAM);
vram[ega_cursor*2] = ch;
}
71,8 → 71,8
if (ega_cursor < SCREEN)
return;
 
memcopy(VIDEORAM + ROW*2, VIDEORAM, (SCREEN - ROW)*2);
memsetw(VIDEORAM + (SCREEN - ROW)*2, ROW, 0x0720);
memcopy(PA2KA(VIDEORAM) + ROW*2, PA2KA(VIDEORAM), (SCREEN - ROW)*2);
memsetw(PA2KA(VIDEORAM) + (SCREEN - ROW)*2, ROW, 0x0720);
ega_cursor = ega_cursor - ROW;
}