Changeset 45b26dad in mainline for kernel/arch/sparc64/src/cpu/cpu.c


Ignore:
Timestamp:
2006-09-26T12:59:28Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b44939b
Parents:
6ff1f1e
Message:

sparc64 work:

  • Loader now starts all processors.
  • Kernel halts all but the bootstrup processor for now.
  • Read clock-frequency from the respective processor node in the device tree
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/cpu/cpu.c

    r6ff1f1e r45b26dad  
    3636#include <cpu.h>
    3737#include <arch.h>
     38#include <print.h>
    3839#include <arch/register.h>
    39 #include <print.h>
    40 #include <arch/boot/boot.h>
     40#include <genarch/ofw/ofw_tree.h>
     41#include <arch/types.h>
     42#include <arch/drivers/tick.h>
    4143
     44/** Perform sparc64 specific initialization of the processor structure for the current processor. */
    4245void cpu_arch_init(void)
    4346{
    44         CPU->arch.clock_frequency = bootinfo.processor.clock_frequency;
     47        ofw_tree_node_t *node;
     48        uint32_t mid;
     49        uint32_t clock_frequency = 0;
     50        upa_config_t upa_config;
     51       
     52        upa_config.value = upa_config_read();
     53        node = ofw_tree_find_child_by_device_type(ofw_tree_lookup("/"), "cpu");
     54        while (node) {
     55                ofw_tree_property_t *prop;
     56               
     57                prop = ofw_tree_getprop(node, "upa-portid");
     58                if (prop && prop->value) {
     59                        mid = *((uint32_t *) prop->value);
     60                        if (mid == upa_config.mid) {
     61                                prop = ofw_tree_getprop(node, "clock-frequency");
     62                                if (prop && prop->value)
     63                                        clock_frequency = *((uint32_t *) prop->value);
     64                        }
     65                }
     66                node = ofw_tree_find_peer_by_device_type(node, "cpu");
     67        }
     68
     69        CPU->arch.clock_frequency = clock_frequency;
     70        tick_init();
    4571}
    4672
     73/** Read version information from the current processor. */
    4774void cpu_identify(void)
    4875{
     
    5077}
    5178
     79/** Print version information for a processor.
     80 *
     81 * @param m Processor structure of the CPU for which version information is to be printed.
     82 */
    5283void cpu_print_report(cpu_t *m)
    5384{
Note: See TracChangeset for help on using the changeset viewer.