Subversion Repositories HelenOS

Rev

Rev 2049 | Rev 2071 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2049 Rev 2055
Line 38... Line 38...
38
#include <print.h>
38
#include <print.h>
39
#include <arch/register.h>
39
#include <arch/register.h>
40
#include <genarch/ofw/ofw_tree.h>
40
#include <genarch/ofw/ofw_tree.h>
41
#include <arch/types.h>
41
#include <arch/types.h>
42
#include <arch/drivers/tick.h>
42
#include <arch/drivers/tick.h>
43
#include <arch/mm/page.h>
-
 
44
#include <arch/mm/tlb.h>
-
 
45
#include <macros.h>
-
 
46
 
43
 
47
/** Perform sparc64 specific initialization of the processor structure for the
44
/** Perform sparc64 specific initialization of the processor structure for the
48
 * current processor.
45
 * current processor.
49
 */
46
 */
50
void cpu_arch_init(void)
47
void cpu_arch_init(void)
Line 78... Line 75...
78
        node = ofw_tree_find_peer_by_device_type(node, "cpu");
75
        node = ofw_tree_find_peer_by_device_type(node, "cpu");
79
    }
76
    }
80
 
77
 
81
    CPU->arch.clock_frequency = clock_frequency;
78
    CPU->arch.clock_frequency = clock_frequency;
82
    tick_init();
79
    tick_init();
83
   
-
 
84
    /*
-
 
85
     * Lock CPU stack in DTLB.
-
 
86
     */
-
 
87
    uintptr_t base = ALIGN_DOWN(config.base, 1 << KERNEL_PAGE_WIDTH);
-
 
88
         
-
 
89
    if (!overlaps((uintptr_t) CPU->stack, PAGE_SIZE, base, (1 <<
-
 
90
        KERNEL_PAGE_WIDTH))) {
-
 
91
        /*
-
 
92
         * Kernel stack of this processor is not locked in DTLB.
-
 
93
         * First, demap any already existing mappings.
-
 
94
         * Second, create a locked mapping for it.
-
 
95
         */
-
 
96
        dtlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_NUCLEUS, (uintptr_t)
-
 
97
            CPU->stack);
-
 
98
        dtlb_insert_mapping((uintptr_t) CPU->stack, KA2PA(CPU->stack),
-
 
99
            PAGESIZE_8K, true, true);
-
 
100
    }
-
 
101
}
80
}
102
 
81
 
103
/** Read version information from the current processor. */
82
/** Read version information from the current processor. */
104
void cpu_identify(void)
83
void cpu_identify(void)
105
{
84
{