/branches/sparc/kernel/arch/sparc64/src/sun4v/sparc64.c |
---|
56,13 → 56,6 |
/** Perform sparc64 specific initialization before main_bsp() is called. */ |
void arch_pre_main(void) |
{ |
/* |
* Initialize Niagara input/output driver. |
* This will be moved to arch_post_mm_init when the memory management |
* is finished for sun4v. |
*/ |
niagara_init(); |
/* Copy init task info. */ |
init.cnt = bootinfo.taskmap.count; |
71,13 → 64,10 |
for (i = 0; i < bootinfo.taskmap.count; i++) { |
init.tasks[i].addr = (uintptr_t) bootinfo.taskmap.tasks[i].addr; |
init.tasks[i].size = bootinfo.taskmap.tasks[i].size; |
printf("Task %d starts at %x and its size id %d.\n", i, init.tasks[i].addr, init.tasks[i].size); |
} |
/* Copy boot allocations info. */ |
ballocs.base = bootinfo.ballocs.base; |
ballocs.size = bootinfo.ballocs.size; |
ofw_tree_init(bootinfo.ofw_root); |
// md_init(); |
} |
/** Perform sparc64 specific initialization before mm is initialized. */ |
96,9 → 86,12 |
* But we only create 128 buckets. |
*/ |
irq_init(1 << 11, 128); |
} |
standalone_sparc64_console_init(); |
} |
/* |
* Initialize Niagara input/output driver. |
*/ |
niagara_init(); |
} |
void arch_post_cpu_init(void) |
/branches/sparc/kernel/arch/sparc64/src/sun4v/start.S |
---|
31,9 → 31,10 |
#include <arch/stack.h> |
#include <arch/sun4v/regdef.h> |
#include <arch/sun4v/hypercall.h> |
#include <arch/mm/pagesize.h> |
#include <arch/mm/sun4v/tte.h> |
#include <arch/mm/sun4v/mmu.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/sun4v/tlb.h> |
.register %g2, #scratch |
.register %g3, #scratch |
44,13 → 45,6 |
#define PHYSMEM_ADDR_SIZE 56 |
/* |
* SILO for an unknown reason loads the image to MAPPING_OFFSET + 0x4000 bytes |
* from the start of the physical memory. We pretend that the physical memory |
* starts MAPPING_OFFSET bytes further than it actually does. |
*/ |
#define MAPPING_OFFSET 0x400000 |
/* |
* Flags set in the TTE data entry mapping the kernel. |
*/ |
#ifdef CONFIG_VIRT_IDX_DCACHE |
118,10 → 112,6 |
! l5 <= physmem_base[(PHYSMEM_ADDR_SIZE - 1):13] |
sllx %l5, 13 + (63 - (PHYSMEM_ADDR_SIZE - 1)), %l5 |
srlx %l5, 63 - (PHYSMEM_ADDR_SIZE - 1), %l5 |
! pretend the physical memory starts further |
set MAPPING_OFFSET, %g2 |
add %l5, %g2, %l5 |
/* |
* Setup basic runtime environment. |
/branches/sparc/kernel/arch/sparc64/src/console.c |
---|
52,7 → 52,7 |
#include <arch/asm.h> |
#include <arch/register.h> |
#include <proc/thread.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <genarch/ofw/ofw_tree.h> |
#include <arch.h> |
#include <panic.h> |
/branches/sparc/kernel/arch/sparc64/src/trap/exception.c |
---|
34,8 → 34,8 |
*/ |
#include <arch/trap/exception.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/interrupt.h> |
#include <interrupt.h> |
#include <arch/asm.h> |
157,7 → 157,7 |
{ |
fault_if_from_uspace(istate, "%s\n", __func__); |
dump_istate(istate); |
dump_sfsr_and_sfar(); |
describe_mmu_fault(); |
panic("%s\n", __func__); |
} |
/branches/sparc/kernel/arch/sparc64/src/mm/as.c |
---|
33,8 → 33,9 |
*/ |
#include <arch/mm/as.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/pagesize.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <genarch/mm/page_ht.h> |
#include <genarch/mm/asid_fifo.h> |
#include <debug.h> |
/branches/sparc/kernel/arch/sparc64/src/mm/tsb.c |
---|
33,7 → 33,8 |
*/ |
#include <arch/mm/tsb.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/pagesize.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/mm/page.h> |
#include <arch/barrier.h> |
#include <mm/as.h> |
/branches/sparc/kernel/arch/sparc64/src/mm/frame.c |
---|
56,6 → 56,8 |
uintptr_t start = bootinfo.memmap.zones[i].start; |
size_t size = bootinfo.memmap.zones[i].size; |
printf("Found a zone: start = %x, size = %d.\n", start, size); |
/* |
* The memmap is created by HelenOS boot loader. |
* It already contains no holes. |
/branches/sparc/kernel/arch/sparc64/src/mm/page.c |
---|
33,8 → 33,9 |
*/ |
#include <arch/mm/page.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/pagesize.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <genarch/mm/page_ht.h> |
#include <mm/frame.h> |
#include <arch/mm/frame.h> |
/branches/sparc/kernel/arch/sparc64/src/drivers/tick.c |
---|
53,10 → 53,10 |
interrupt_register(14, "tick_int", tick_interrupt); |
compare.int_dis = false; |
compare.tick_cmpr = CPU->arch.clock_frequency / HZ; |
compare.tick_cmpr = tick_counter_read() + |
CPU->arch.clock_frequency / HZ; |
CPU->arch.next_tick_cmpr = compare.tick_cmpr; |
tick_compare_write(compare.value); |
tick_write(0); |
#if defined (US3) |
/* disable STICK interrupts and clear any pending ones */ |
110,12 → 110,12 |
* about 812 years. If there was a 2GHz UltraSPARC computer, it would |
* overflow only in 146 years. |
*/ |
drift = tick_read() - CPU->arch.next_tick_cmpr; |
drift = tick_counter_read() - CPU->arch.next_tick_cmpr; |
while (drift > CPU->arch.clock_frequency / HZ) { |
drift -= CPU->arch.clock_frequency / HZ; |
CPU->missed_clock_ticks++; |
} |
CPU->arch.next_tick_cmpr = tick_read() + |
CPU->arch.next_tick_cmpr = tick_counter_read() + |
(CPU->arch.clock_frequency / HZ) - drift; |
tick_compare_write(CPU->arch.next_tick_cmpr); |
clock(); |
/branches/sparc/kernel/arch/sparc64/src/sun4u/start.S |
---|
28,13 → 28,13 |
#include <arch/arch.h> |
#include <arch/sun4u/arch.h> |
#include <arch/cpu.h> |
#include <arch/sun4u/cpu.h> |
#include <arch/sun4u/regdef.h> |
#include <arch/boot/boot.h> |
#include <arch/stack.h> |
#include <arch/mm/pagesize.h> |
#include <arch/mm/sun4u/mmu.h> |
#include <arch/mm/tlb.h> |
#include <arch/mm/sun4u/tlb.h> |
#include <arch/mm/sun4u/tte.h> |