On Wed, Jan 07, 2009 at 02:54:57PM +0100, Gerhard Pircher wrote:
> +void amigaone_show_cpuinfo(struct seq_file *m)
> +{
> +     struct device_node *root;
> +     const char *model = "";
> +
> +     root = of_find_node_by_path("/");
> +     if (root)
> +             model = of_get_property(root, "model", NULL);
> +     seq_printf(m, "machine\t\t: %s\n", model);
> +
> +     of_node_put(root);
> +     return;

This is already printed by the generic cpuinfo.

> +void __init amigaone_setup_arch(void)
> +{
> +     struct device_node *np;
> +
> +     /* Initialization until calibrate_delay() runs. */
> +     loops_per_jiffy = 50000000/HZ;

Is this really necessary?

> +     /* Flush and disable I/D cache. */
> +     __asm__ __volatile__ ("mfspr    3, 1008"        ::: "r3");
> +     __asm__ __volatile__ ("ori      5, 5, 0xcc00"   ::: "r5");
> +     __asm__ __volatile__ ("ori      4, 3, 0xc00"    ::: "r4");
> +     __asm__ __volatile__ ("andc     5, 3, 5"        ::: "r5");

Don't do this; instead, have one multi-line asm statement (or better yet,
just use mfspr()/mtspr()/sync()/isync()).

GCC is perfectly free to trash your registers in between statements.

-Scott
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to