Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ppc32/src/ppc32.c

    r20f8111 r36df4109  
    3333 */
    3434
     35#include <arch.h>
     36#include <arch/arch.h>
    3537#include <config.h>
    36 #include <arch.h>
    3738#include <arch/boot/boot.h>
    3839#include <genarch/drivers/via-cuda/cuda.h>
     
    4748#include <mm/page.h>
    4849#include <mm/km.h>
     50#include <time/clock.h>
    4951#include <abi/proc/uarg.h>
    5052#include <console/console.h>
     
    6062#define IRQ_CUDA   10
    6163
     64static void ppc32_pre_mm_init(void);
     65static void ppc32_post_mm_init(void);
     66static void ppc32_post_smp_init(void);
     67
     68arch_ops_t ppc32_ops = {
     69        .pre_mm_init = ppc32_pre_mm_init,
     70        .post_mm_init = ppc32_post_mm_init,
     71        .post_smp_init = ppc32_post_smp_init,
     72};
     73
     74arch_ops_t *arch_ops = &ppc32_ops;
     75
    6276bootinfo_t bootinfo;
    6377
     
    6680
    6781/** Performs ppc32-specific initialization before main_bsp() is called. */
    68 void arch_pre_main(bootinfo_t *bootinfo)
     82void ppc32_pre_main(bootinfo_t *bootinfo)
    6983{
    7084        /* Copy tasks map. */
     
    94108}
    95109
    96 void arch_pre_mm_init(void)
     110void ppc32_pre_mm_init(void)
    97111{
    98112        /* Initialize dispatch table */
    99113        interrupt_init();
    100114       
     115        ofw_tree_node_t *cpus_node;
     116        ofw_tree_node_t *cpu_node;
     117        ofw_tree_property_t *freq_prop;
     118
     119        cpus_node = ofw_tree_lookup("/cpus");
     120        if (!cpus_node)
     121                panic("Could not find cpus node.");
     122
     123        cpu_node = cpus_node->child;
     124        if (!cpu_node)
     125                panic("Could not find first cpu.");     
     126
     127        freq_prop = ofw_tree_getprop(cpu_node, "timebase-frequency");
     128        if (!freq_prop)
     129                panic("Could not get frequency property.");
     130
     131        uint32_t freq;
     132        freq = *((uint32_t *) freq_prop->value);
     133
    101134        /* Start decrementer */
    102         start_decrementer();
     135        decrementer_start(freq / HZ);
    103136}
    104137
     
    172205#endif
    173206
    174 void arch_post_mm_init(void)
     207void ppc32_post_mm_init(void)
    175208{
    176209        if (config.cpu_active == 1) {
     
    187220                zone_merge_all();
    188221        }
    189 }
    190 
    191 void arch_post_cpu_init(void)
    192 {
    193 }
    194 
    195 void arch_pre_smp_init(void)
    196 {
    197222}
    198223
     
    253278}
    254279
    255 void arch_post_smp_init(void)
     280void ppc32_post_smp_init(void)
    256281{
    257282        /* Currently the only supported platform for ppc32 is 'mac'. */
Note: See TracChangeset for help on using the changeset viewer.