vmlemon / Orion

Next-generation, L4Ka::Pistachio-based operating system
7 stars 0 forks source link

POWER 64-bit common codebase #22

Open vmlemon opened 5 years ago

vmlemon commented 5 years ago

As part of the upstream Pistachio release, and the NICTA code drop (#9), we inherited a large, fragmented codebase, in terms of the POWER/PPC64 port, with differently split headers, missing definitions, and redundant versions of common functions, which is rapidly becoming a maintenance nightmare, since we're constantly fixing-and-refixing stuff, and having to identify which layer is responsible for what.

The result of #9 was bemusing, in that backporting from the NICTA archive both fixed, and broke a lot of stuff, and trampled some of our existing fixes. :(

It could be useful to identify what is shared between the POWER3, and POWER4, and G5 implementations, and refactor them into a common files directory.

The PowerPC 32-bit port seems to be a completely-separate, unrelated codebase, with its own problems, but we'll deal with that, later, once we properly get around into adding Wii support (#17).

This effort would probably go a long way towards fixing #5, #6, #15, and #21, with one stone...

vmlemon commented 5 years ago

As a first step, I merged the old kernel, and kernel.nicta directories, so that the files from kernel.nicta are in .nicta subdirectories of kernel, as well as the contents of the two versions of the platform/ofpower3/ directories.

The only delta between the NICTA, and upstream versions of ofpower3 is in opic.cc, in the way that headers are defined:

[root@fedora28 ofpower3]# diff opic.cc opic.cc.nicta 
37,38d36
< #include INC_ARCH(pgent.h)
< #include INC_ARCH(segment.h)
39a38,39
> #include INC_ARCH(segment.h)
> #include INC_GLUE(pgent_inline.h)
vmlemon commented 5 years ago

Also merged the two versions of platform/ofpower4, which had minimal delta, save for copyright headers being missing from some files, and some commented-out Assembly source, that was already fixed in one version.

vmlemon commented 5 years ago

Merged the remaining platform.nicta directories into platform, and suffixed them with .nicta.

vmlemon commented 5 years ago

Merged the remaining arch.nicta directories into arch, and suffixed them with .nicta.

vmlemon commented 5 years ago

Moved the remaining .nicta subdirectories in kernel/src, so that their contents are aligned, for later comparison...

vmlemon commented 5 years ago

At present, the state of building a POWER4 build is still:

[root@fedora28 p3]# make
make[1]: Entering directory '/root/Orion/kernel/p3'
===> Building dependencies
===> src/glue/v4-powerpc64/asmsyms.cc
cd src/glue/v4-powerpc64/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c src/glue/v4-powerpc64/asmsyms.cc
gcc: error: src/glue/v4-powerpc64/asmsyms.cc: No such file or directory
gcc: fatal error: no input files
compilation terminated.
===> src/generic/lib.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/lib.cc
/root/Orion/kernel/src/generic/lib.cc: In function ‘void* memset(void*, unsigned int, unsigned int)’:
/root/Orion/kernel/src/generic/lib.cc:56:9: warning: conversion from ‘unsigned int’ to ‘u8_t’ {aka ‘unsigned char’} may change value [-Wconversion]
  *s++ = c;
         ^
===> src/generic/kmemory.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/kmemory.cc
===> src/generic/traceids.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/traceids.cc
===> src/generic/tracebuffer.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/tracebuffer.cc
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:41,
                 from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
In file included from /root/Orion/kernel/src/api/v4/kernelinterface.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:86:
/root/Orion/kernel/src/api/v4/memdesc.h: In member function ‘void memdesc_t::set(memdesc_t::type_e, word_t, bool, addr_t, addr_t)’:
/root/Orion/kernel/src/api/v4/memdesc.h:118:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      _type = type;
              ^~~~
/root/Orion/kernel/src/api/v4/memdesc.h:119:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      _t    = t;
              ^
/root/Orion/kernel/src/api/v4/memdesc.h:121:29: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      _low  = ((word_t) low) >> 10;
              ~~~~~~~~~~~~~~~^~~~~
/root/Orion/kernel/src/api/v4/memdesc.h:122:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      _high = ((word_t) high) >> 10;
              ~~~~~~~~~~~~~~~~^~~~~
In file included from /root/Orion/kernel/src/generic/tracebuffer.cc:86:
/root/Orion/kernel/src/api/v4/kernelinterface.h: In member function ‘void thread_info_t::set_user_base(word_t)’:
/root/Orion/kernel/src/api/v4/kernelinterface.h:169:52: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘short unsigned int:12’ may change value [-Wconversion]
     void set_user_base(word_t base)  { user_base = base; }
                                                    ^~~~
/root/Orion/kernel/src/api/v4/kernelinterface.h: In member function ‘void thread_info_t::set_system_base(word_t)’:
/root/Orion/kernel/src/api/v4/kernelinterface.h:170:56: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘short unsigned int:12’ may change value [-Wconversion]
     void set_system_base(word_t base)  { system_base = base; }
                                                        ^~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:39,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_sdr1_t::create(word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:223:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:46’ may change value [-Wconversion]
     this->x.htaborg = base >> POWERPC64_HTABORG_SHIFT;
                            ^
/root/Orion/kernel/src/arch/powerpc64/pghash.h:224:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
     this->x.htabsize = size;
                        ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create_4k(word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:249:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:250:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
     this->x.api = virt_to_api( virt );
                   ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:251:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create(word_t, word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:262:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:265:36: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt ) & (~(1ul));
                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:267:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt );
                ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:269:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.l = large;
                 ^~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:270:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create(word_t, word_t, word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:281:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:284:36: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt ) & (~(1ul));
                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:286:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt );
                ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:288:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.bolted = bolted;
                      ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:289:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.l = large;
                 ^~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:290:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:41,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/fpage.h: In member function ‘void fpage_t::set(word_t, word_t, bool, bool, bool)’:
/root/Orion/kernel/src/api/v4/fpage.h:69:60: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      x.base = (base & (~0 >> (L4_FPAGE_BASE_BITS - size))) >> 10;
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/root/Orion/kernel/src/api/v4/fpage.h:70:15: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      x.size = size;
               ^~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:42,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/thread.h: In static member function ‘static threadid_t threadid_t::irqthread(word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:71:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.threadno = irq;
                            ^~~
/root/Orion/kernel/src/api/v4/thread.h: In static member function ‘static threadid_t threadid_t::threadid(word_t, word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:78:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.version = version;
                           ^~~~~~~
/root/Orion/kernel/src/api/v4/thread.h:79:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.threadno = threadno;
                            ^~~~~~~~
/root/Orion/kernel/src/api/v4/thread.h: In member function ‘void threadid_t::set_global_id(word_t, word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:126:23: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
     global.threadno = threadno;
                       ^~~~~~~~
/root/Orion/kernel/src/api/v4/thread.h:127:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
     global.version = version;
                      ^~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:54,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/generic/mdb.h: In constructor ‘mdb_t::range_t::range_t(addr_t, word_t)’:
/root/Orion/kernel/src/generic/mdb.h:119:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:57’ may change value [-Wconversion]
       idx = (word_t) b >> s;
             ~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h:120:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
       size = s;
              ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_next(mdb_node_t*)’:
/root/Orion/kernel/src/generic/mdb.h:549:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
  next = ((word_t) n) >> 1;
         ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_table(mdb_table_t*)’:
/root/Orion/kernel/src/generic/mdb.h:562:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     next = ((word_t) t) >> 1;
            ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::remove_table()’:
/root/Orion/kernel/src/generic/mdb.h:571:49: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     next = ((word_t) get_table ()->get_node ()) >> 1;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_depth(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:581:13: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:50’ may change value [-Wconversion]
     depth = d;
             ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_objsize(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:599:16: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
     obj_size = s;
                ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_inrights(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:617:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
     in_rights = r;
                 ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_outrights(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:626:18: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
     out_rights = r;
                  ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_tableent_t::set_table(mdb_table_t*)’:
/root/Orion/kernel/src/generic/mdb.h:692:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     ptr = ((word_t) t) >> 1;
           ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_tableent_t::set_node(mdb_node_t*)’:
/root/Orion/kernel/src/generic/mdb.h:705:21: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
  ptr = ((word_t) n) >> 1;
        ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_table_t::remove_table(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:838:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     e->ptr = ((word_t) n) >> 1;
              ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_table_t::set_objsize(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:901:15: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
     objsize = s;
               ^
In file included from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: At global scope:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:60:2: error: ‘paddr_t’ does not name a type; did you mean ‘addr_t’?
  paddr_t physaddr;
  ^~~~~~~
  addr_t
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:125:12: error: extra qualification ‘space_t::’ on member ‘space_control’ [-fpermissive]
     word_t space_t::space_control (word_t ctrl, fpage_t kip_area, fpage_t utcb_area, threadid_t redirector_tid) { return 0; }
            ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:128:12: error: ‘paddr_t’ does not name a type; did you mean ‘addr_t’?
     static paddr_t sigma0_translate(addr_t addr, pgent_t::pgsize_e size) { return (paddr_t)addr; }
            ^~~~~~~
            addr_t
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: In function ‘void add_tcb(tcb_t*, cpuid_t)’:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:313:5: error: ‘x’ was not declared in this scope
     x.thread_count ++;
     ^
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: In function ‘bool remove_tcb(tcb_t*, cpuid_t)’:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:324:5: error: ‘x’ was not declared in this scope
     x.thread_count --;
     ^
In file included from /root/Orion/kernel/src/api/v4/tcb.h:47,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/ipc.h: In member function ‘void msg_tag_t::set(word_t, word_t, word_t, bool, bool)’:
/root/Orion/kernel/src/api/v4/ipc.h:82:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->send.typed = typed;
                         ^~~~~
/root/Orion/kernel/src/api/v4/ipc.h:83:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->send.untyped = untyped;
                           ^~~~~~~
/root/Orion/kernel/src/api/v4/ipc.h:84:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:48’ may change value [-Wconversion]
      this->send.label = label;
                         ^~~~~
/root/Orion/kernel/src/api/v4/ipc.h: In member function ‘void acceptor_t::set_rcv_window(fpage_t)’:
/root/Orion/kernel/src/api/v4/ipc.h:232:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:60’ may change value [-Wconversion]
  { x.rcv_window = (fpage.raw >> 4); };
                   ~~~~~~~~~~~^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/root/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/root/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/root/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/root/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/root/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
                        notify_mask
In file included from /root/Orion/kernel/src/arch/powerpc64/debug.h:36,
                 from /root/Orion/kernel/src/debug.h:75,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:84:
/root/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/root/Orion/kernel/src/api/v4/syscalls.h:53:50: error: ‘timeout_t’ has not been declared
 SYS_IPC (threadid_t to_tid, threadid_t from_tid, timeout_t timeout);
                                                  ^~~~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/syscalls.h:75:21: note: in definition of macro ‘SYS_IPC’
  sys_ipc (to, from, timeout)
                     ^~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:41,
                 from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:112:13: error: no declaration matches ‘void tcb_t::allocate()’
 INLINE void tcb_t::allocate()
             ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:216:10: note: candidate is: ‘bool tcb_t::allocate()’
     bool allocate();
          ^~~~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:569:13: error: no declaration matches ‘void tcb_t::copy_saved_regs(tcb_t*)’
 inline void tcb_t::copy_saved_regs(tcb_t *src)
             ^~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:569:13: note: no functions named ‘void tcb_t::copy_saved_regs(tcb_t*)’
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:601:13: error: no declaration matches ‘void tcb_t::copy_volatile_regs(tcb_t*)’
 INLINE void tcb_t::copy_volatile_regs(tcb_t *src)
             ^~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:601:13: note: no functions named ‘void tcb_t::copy_volatile_regs(tcb_t*)’
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:735:33: error: ‘timeout_t’ has not been declared
                                 timeout_t timeout)
                                 ^~~~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:734:18: error: no declaration matches ‘msg_tag_t tcb_t::do_ipc(threadid_t, threadid_t, int)’
 INLINE msg_tag_t tcb_t::do_ipc (threadid_t to_tid, threadid_t from_tid,
                  ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:130:15: note: candidate is: ‘msg_tag_t tcb_t::do_ipc(threadid_t, threadid_t)’
     msg_tag_t do_ipc(threadid_t to_tid, threadid_t from_tid);
               ^~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘bool tcb_t::is_local_cpu()’:
/root/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:739:13: note: suggested alternative: ‘get_current_tcb’
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
             get_current_tcb
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:44,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h: At global scope:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h:197:22: warning: inline function ‘pgent_t* pgent_t::next(space_t*, pgent_t::pgsize_e, word_t)’ used but never defined
     inline pgent_t * next( space_t * s, pgsize_e pgsize, word_t num );
                      ^~~~
make[1]: *** [/root/Orion/kernel/Mk/Makeconf:208: src/generic/tracebuffer.o] Error 1
make[1]: Leaving directory '/root/Orion/kernel/p3'
make: *** [Makefile:38: all] Error 2
[root@fedora28 p3]# 
vmlemon commented 5 years ago

Aligned kernel/src/platform/ofg5.nicta, and kernel/src/platform/ofg5. Their version mostly just changed comments, and copyright headers, so we've retained most of our existing code.

vmlemon commented 5 years ago
[root@fedora28 ofpower3]# diff opic.cc opic.cc.nicta
37,38d36
< #include INC_ARCH(pgent.h)
< #include INC_ARCH(segment.h)
39a38,39
> #include INC_ARCH(segment.h)
> #include INC_GLUE(pgent_inline.h)
[root@fedora28 ofpower3]# pwd
/root/Orion/kernel/src/platform/ofpower3
vmlemon commented 5 years ago

Ended up using the NICTA version, for the time being.

Looking at ofpower3, we have:

[root@fedora28 ofpower3]# ls 
call.S  config.h  head.S  intctrl.h  linker.lds  Makeconf  opic.cc  opic.h  prom.cc  prom.h
[root@fedora28 ofpower3]# ls ../ofpower4
call.S  config.h  head.S  intctrl.h  linker.lds  Makeconf  prom.cc  prom.h  xics.cc  xics.h
[root@fedora28 ofpower3]# 
vmlemon commented 5 years ago

Judging from https://lwn.net/Articles/72844/, OpenPIC (OPIC), and XICS are shipped on different machine families, from different vendors (the G5 Macs apparently also contained them, although some Apple systems have their own PIC designs, and the PS3 presumably has yet another implementation).

vmlemon commented 5 years ago

Seems that the API has changed...

[root@fedora28 platform]# diff ofpower4/prom.cc ofpower3/prom.cc
5,6c5,6
<  * File path: platform/ofpower4/prom.cc
<  * Description:   OpenFirmware Power4 Setup.
---
>  * File path: platform/ofpower3/prom.cc
>  * Description:   OpenFirmware Power3 Setup.
29c29
<  * $Id: prom.cc,v 1.3 2005/01/19 12:53:18 cvansch Exp $
---
>  * $Id: prom.cc,v 1.3 2003/10/22 08:05:04 cvansch Exp $
33,39d32
< //cat kernel/src/platform/ofppc/1275tree.h | grep OF1275_KIP_TYPE, too
< #define OF1275_KIP_TYPE       0xe
< //The above is a massive hack!
< 
< //cat kernel/src/platform/ofppc/1275tree.h | grep OF1275_KIP_SUBTYPE
< #define OF1275_KIP_SUBTYPE    0xf
< 
43d35
< #include INC_ARCH(ppc64_registers.h)
53,56d44
< //These were pulled from ofppc/1275tree.h
< #define OF1275_KIP_TYPE 0xE
< #define OF1275_KIP_SUBTYPE 0xF
< 
67c55
<     PTRRELOC(get_of1275_tree())->init( (char *)vaddr );
---
>     get_of1275_tree()->init( (char *)vaddr );
83d70
<   //Where do these come from?
95c82
<     PTRRELOC(get_of1275_tree())->init( NULL );
---
>     get_of1275_tree()->init( NULL );
100c87
<  * We are called at the kernel PHYSICAL address, relocate!
---
>  * We are called in real mode - no relocation.
106,109c93
<     of1275_client_interface_t *of = PTRRELOC(get_of1275());
<     kernel_interface_page_t *kip = PTRRELOC(get_kip());
< 
<     of->init(ofentry);
---
>     get_of1275()->init(ofentry);
112c96
<     of1275_tree_init( kip );
---
>     of1275_tree_init( get_kip() );
114d97
< #ifndef CONFIG_PLAT_OFG5
117,120d99
< #endif
< 
<     word_t pvr = ppc64_get_pvr();
<     word_t cpu = (pvr>>16) & 0xffff;
122,129c101,112
<     //What about Cell, and POWER9?
<     if (cpu == 0x35) prom_puts( "Detected Power4 (Spinnaker) " );
<     else if (cpu == 0x38) prom_puts( "Detected Power4+    " );
<     else if (cpu == 0x39) prom_puts( "Detected PPC970 " );
<     else if (cpu == 0x3c) prom_puts( "Detected PPC970FX   " );
<     else if (cpu == 0x40) prom_puts( "Detected Power3 " );
<     else if (cpu == 0x41) prom_puts( "Detected Power3+    " );
<     else {
---
>     word_t pvr;
>     asm volatile (
>   "mfpvr      %0;"
>   : "=r" (pvr)
>     );
>     switch( (pvr>>16) & 0xffff )
>     {
>     case 0x35: prom_puts( "Detected Power4 (Spinnaker) " );   break;
>     case 0x38: prom_puts( "Detected Power4+   " );    break;
>     case 0x40: prom_puts( "Detected Power3    " );    break;
>     case 0x41: prom_puts( "Detected Power3+   " );    break;
>     default:
131c114
<   prom_exit( "\n\r" );
---
>   prom_puts( ", " );
136,137c119,128
<     u32_t *prop_val, len, cpuid, cpu_hz, bus_hz;
<     of1275_device_t *chosen = PTRRELOC(get_of1275_tree())->find( "/chosen" );
---
>     switch( (pvr>>16) & 0xffff )
>     {
>     case 0x40: ;
>     case 0x41: break;
>     default:
>   prom_exit( "Unsupported CPU type\n\r" );
>     }
> 
>     u32_t *prop_val, len, cpu, cpu_hz, bus_hz;
>     of1275_device_t *chosen = get_of1275_tree()->find( "/chosen" );
144,145c135,136
< //    of1275_phandle_t cpu_pkg = of->instance_to_package( *prop_val );
<     of->get_prop( cpu_pkg, "reg", &cpuid, sizeof(cpu));
---
> //    of1275_phandle_t cpu_pkg = get_of1275()->instance_to_package( *prop_val );
>     get_of1275()->get_prop( cpu_pkg, "reg", &cpu, sizeof(cpu));
147,148c138,139
<     of->get_prop( cpu_pkg, "clock-frequency", &cpu_hz, sizeof(cpu_hz));
<     of->get_prop( cpu_pkg, "bus-frequency", &bus_hz, sizeof(bus_hz));
---
>     get_of1275()->get_prop( cpu_pkg, "clock-frequency", &cpu_hz, sizeof(cpu_hz));
>     get_of1275()->get_prop( cpu_pkg, "bus-frequency", &bus_hz, sizeof(bus_hz));
150c141
<     boot_cpuid = cpuid;
---
>     boot_cpuid = cpu;
[root@fedora28 platform]# 
vmlemon commented 5 years ago

As an experiment, I've moved out the POWER3 version of head.S to a new kernel/src/platform/ofpower64 directory, and updated the Makeconf files, in kernel/src/platform/ofpower3, and kernel/src/platform/ofpower4 to use it, since the contents are substantially-similar, but the P3 version has a higher revision, and there seems to be a tweak to the register names:

tyson@tyson-Lenovo-ideapad-120S-14IAP:~/Orion/kernel/src/platform/ofpower4$ diff ../ofpower64/head.S head.S.old  
5c5
<  * File path: platform/ofpower3/head.S
---
>  * File path: platform/ofpower4/head.S
31c31
<  * $Id: head.S,v 1.4 2005/01/19 12:56:17 cvansch Exp $
---
>  * $Id: head.S,v 1.3 2005/01/19 12:55:46 cvansch Exp $
75c75
<   LD_CONST(r12, MSR_INIT_REAL_MODE)   /* Get the initial real mode MSR setting and jump to 64-bit mode */
---
>   LD_CONST(r12, MSR_REAL_MODE)        /* Get the real mode MSR setting and jump to 64-bit mode */

This shouldn't break things massively, but we can always revert it, later...

vmlemon commented 5 years ago

Current status, so far, building for POWER4+, is :

[root@fedora28 p3]# make 
make[1]: Entering directory '/root/Orion/kernel/p3'
===> src/generic/lib.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/lib.cc
/root/Orion/kernel/src/generic/lib.cc: In function ‘void* memset(void*, unsigned int, unsigned int)’:
/root/Orion/kernel/src/generic/lib.cc:56:9: warning: conversion from ‘unsigned int’ to ‘u8_t’ {aka ‘unsigned char’} may change value [-Wconversion]
  *s++ = c;
         ^
===> src/generic/kmemory.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/kmemory.cc
===> src/generic/traceids.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/traceids.cc
===> src/generic/tracebuffer.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/p3/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4p -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4p -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/p3/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h  -include /root/Orion/kernel/src/generic/types.h -fno-rtti -fno-builtin  -fomit-frame-pointer -fno-exceptions -Wall -Wno-non-virtual-dtor -Wno-format -O2 -mpowerpc64 -msoft-float -mno-minimal-toc  -mcpu=power4   -Wconversion  -c /root/Orion/kernel/src/generic/tracebuffer.cc
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:41,
                 from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
    word_t uhandle, threadid_t pager_tid);
                                        ^
In file included from /root/Orion/kernel/src/api/v4/kernelinterface.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:86:
/root/Orion/kernel/src/api/v4/memdesc.h: In member function ‘void memdesc_t::set(memdesc_t::type_e, word_t, bool, addr_t, addr_t)’:
/root/Orion/kernel/src/api/v4/memdesc.h:118:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      _type = type;
              ^~~~
/root/Orion/kernel/src/api/v4/memdesc.h:119:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
      _t    = t;
              ^
/root/Orion/kernel/src/api/v4/memdesc.h:121:29: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      _low  = ((word_t) low) >> 10;
              ~~~~~~~~~~~~~~~^~~~~
/root/Orion/kernel/src/api/v4/memdesc.h:122:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      _high = ((word_t) high) >> 10;
              ~~~~~~~~~~~~~~~~^~~~~
In file included from /root/Orion/kernel/src/generic/tracebuffer.cc:86:
/root/Orion/kernel/src/api/v4/kernelinterface.h: In member function ‘void thread_info_t::set_user_base(word_t)’:
/root/Orion/kernel/src/api/v4/kernelinterface.h:169:52: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘short unsigned int:12’ may change value [-Wconversion]
     void set_user_base(word_t base)  { user_base = base; }
                                                    ^~~~
/root/Orion/kernel/src/api/v4/kernelinterface.h: In member function ‘void thread_info_t::set_system_base(word_t)’:
/root/Orion/kernel/src/api/v4/kernelinterface.h:170:56: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘short unsigned int:12’ may change value [-Wconversion]
     void set_system_base(word_t base)  { system_base = base; }
                                                        ^~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:39,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_sdr1_t::create(word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:223:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:46’ may change value [-Wconversion]
     this->x.htaborg = base >> POWERPC64_HTABORG_SHIFT;
                            ^
/root/Orion/kernel/src/arch/powerpc64/pghash.h:224:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
     this->x.htabsize = size;
                        ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create_4k(word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:249:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:250:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
     this->x.api = virt_to_api( virt );
                   ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:251:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create(word_t, word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:262:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:265:36: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt ) & (~(1ul));
                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:267:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt );
                ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:269:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.l = large;
                 ^~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:270:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h: In member function ‘void ppc64_pte_t::create(word_t, word_t, word_t, word_t, word_t, word_t)’:
/root/Orion/kernel/src/arch/powerpc64/pghash.h:281:20: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:52’ may change value [-Wconversion]
     this->x.vsid = vsid;
                    ^~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:284:36: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt ) & (~(1ul));
                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:286:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  this->x.api = virt_to_api( virt );
                ~~~~~~~~~~~^~~~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:288:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.bolted = bolted;
                      ^~~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:289:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.l = large;
                 ^~~~~
/root/Orion/kernel/src/arch/powerpc64/pghash.h:290:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:1’ may change value [-Wconversion]
     this->x.h = second;
                 ^~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:41,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/fpage.h: In member function ‘void fpage_t::set(word_t, word_t, bool, bool, bool)’:
/root/Orion/kernel/src/api/v4/fpage.h:69:60: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
      x.base = (base & (~0 >> (L4_FPAGE_BASE_BITS - size))) >> 10;
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/root/Orion/kernel/src/api/v4/fpage.h:70:15: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      x.size = size;
               ^~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:42,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/thread.h: In static member function ‘static threadid_t threadid_t::irqthread(word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:71:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.threadno = irq;
                            ^~~
/root/Orion/kernel/src/api/v4/thread.h: In static member function ‘static threadid_t threadid_t::threadid(word_t, word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:78:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.version = version;
                           ^~~~~~~
/root/Orion/kernel/src/api/v4/thread.h:79:28: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
      tid.global.threadno = threadno;
                            ^~~~~~~~
/root/Orion/kernel/src/api/v4/thread.h: In member function ‘void threadid_t::set_global_id(word_t, word_t)’:
/root/Orion/kernel/src/api/v4/thread.h:126:23: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
     global.threadno = threadno;
                       ^~~~~~~~
/root/Orion/kernel/src/api/v4/thread.h:127:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned int’ may change value [-Wconversion]
     global.version = version;
                      ^~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:54,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/generic/mdb.h: In constructor ‘mdb_t::range_t::range_t(addr_t, word_t)’:
/root/Orion/kernel/src/generic/mdb.h:119:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:57’ may change value [-Wconversion]
       idx = (word_t) b >> s;
             ~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h:120:14: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
       size = s;
              ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_next(mdb_node_t*)’:
/root/Orion/kernel/src/generic/mdb.h:549:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
  next = ((word_t) n) >> 1;
         ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_table(mdb_table_t*)’:
/root/Orion/kernel/src/generic/mdb.h:562:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     next = ((word_t) t) >> 1;
            ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::remove_table()’:
/root/Orion/kernel/src/generic/mdb.h:571:49: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     next = ((word_t) get_table ()->get_node ()) >> 1;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_depth(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:581:13: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:50’ may change value [-Wconversion]
     depth = d;
             ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_objsize(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:599:16: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
     obj_size = s;
                ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_inrights(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:617:17: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
     in_rights = r;
                 ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_node_t::set_outrights(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:626:18: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:4’ may change value [-Wconversion]
     out_rights = r;
                  ^
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_tableent_t::set_table(mdb_table_t*)’:
/root/Orion/kernel/src/generic/mdb.h:692:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     ptr = ((word_t) t) >> 1;
           ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_tableent_t::set_node(mdb_node_t*)’:
/root/Orion/kernel/src/generic/mdb.h:705:21: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
  ptr = ((word_t) n) >> 1;
        ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_table_t::remove_table(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:838:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:63’ may change value [-Wconversion]
     e->ptr = ((word_t) n) >> 1;
              ~~~~~~~~~~~~~^~~~
/root/Orion/kernel/src/generic/mdb.h: In member function ‘void mdb_table_t::set_objsize(word_t)’:
/root/Orion/kernel/src/generic/mdb.h:901:15: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
     objsize = s;
               ^
In file included from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: At global scope:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:60:2: error: ‘paddr_t’ does not name a type; did you mean ‘addr_t’?
  paddr_t physaddr;
  ^~~~~~~
  addr_t
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:125:12: error: extra qualification ‘space_t::’ on member ‘space_control’ [-fpermissive]
     word_t space_t::space_control (word_t ctrl, fpage_t kip_area, fpage_t utcb_area, threadid_t redirector_tid) { return 0; }
            ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:128:12: error: ‘paddr_t’ does not name a type; did you mean ‘addr_t’?
     static paddr_t sigma0_translate(addr_t addr, pgent_t::pgsize_e size) { return (paddr_t)addr; }
            ^~~~~~~
            addr_t
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: In function ‘void add_tcb(tcb_t*, cpuid_t)’:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:313:5: error: ‘x’ was not declared in this scope
     x.thread_count ++;
     ^
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: In function ‘bool remove_tcb(tcb_t*, cpuid_t)’:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:324:5: error: ‘x’ was not declared in this scope
     x.thread_count --;
     ^
In file included from /root/Orion/kernel/src/api/v4/tcb.h:47,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/ipc.h: In member function ‘void msg_tag_t::set(word_t, word_t, word_t, bool, bool)’:
/root/Orion/kernel/src/api/v4/ipc.h:82:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->send.typed = typed;
                         ^~~~~
/root/Orion/kernel/src/api/v4/ipc.h:83:27: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->send.untyped = untyped;
                           ^~~~~~~
/root/Orion/kernel/src/api/v4/ipc.h:84:25: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:48’ may change value [-Wconversion]
      this->send.label = label;
                         ^~~~~
/root/Orion/kernel/src/api/v4/ipc.h: In member function ‘void acceptor_t::set_rcv_window(fpage_t)’:
/root/Orion/kernel/src/api/v4/ipc.h:232:30: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:60’ may change value [-Wconversion]
  { x.rcv_window = (fpage.raw >> 4); };
                   ~~~~~~~~~~~^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘tcb_t* tcb_t::get_partner_tcb()’:
/root/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
     return this->get_space()->get_tcb(partner);
                               ^~~~~~~
                               add_tcb
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::clear_notify_bits()’:
/root/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits = 0;
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::add_notify_bits(word_t)’:
/root/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits |= bits;
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘void tcb_t::sub_notify_bits(word_t)’:
/root/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
  get_utcb()->notify_bits &= ~(bits);
              ^~~~~~~~~~~
              notify_mask
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘word_t tcb_t::get_notify_bits()’:
/root/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
     return get_utcb()->notify_bits;
                        ^~~~~~~~~~~
                        notify_mask
In file included from /root/Orion/kernel/src/arch/powerpc64/debug.h:36,
                 from /root/Orion/kernel/src/debug.h:75,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:84:
/root/Orion/kernel/src/api/v4/syscalls.h: At global scope:
/root/Orion/kernel/src/api/v4/syscalls.h:53:50: error: ‘timeout_t’ has not been declared
 SYS_IPC (threadid_t to_tid, threadid_t from_tid, timeout_t timeout);
                                                  ^~~~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/syscalls.h:75:21: note: in definition of macro ‘SYS_IPC’
  sys_ipc (to, from, timeout)
                     ^~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:41,
                 from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
 SYS_EXCHANGE_REGISTERS (threadid_t dest_tid, word_t control,
 ^~~~~~~~~~~~~~~~~~~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:112:13: error: no declaration matches ‘void tcb_t::allocate()’
 INLINE void tcb_t::allocate()
             ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:216:10: note: candidate is: ‘bool tcb_t::allocate()’
     bool allocate();
          ^~~~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:569:13: error: no declaration matches ‘void tcb_t::copy_saved_regs(tcb_t*)’
 inline void tcb_t::copy_saved_regs(tcb_t *src)
             ^~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:569:13: note: no functions named ‘void tcb_t::copy_saved_regs(tcb_t*)’
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:601:13: error: no declaration matches ‘void tcb_t::copy_volatile_regs(tcb_t*)’
 INLINE void tcb_t::copy_volatile_regs(tcb_t *src)
             ^~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:601:13: note: no functions named ‘void tcb_t::copy_volatile_regs(tcb_t*)’
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:707,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:735:33: error: ‘timeout_t’ has not been declared
                                 timeout_t timeout)
                                 ^~~~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:734:18: error: no declaration matches ‘msg_tag_t tcb_t::do_ipc(threadid_t, threadid_t, int)’
 INLINE msg_tag_t tcb_t::do_ipc (threadid_t to_tid, threadid_t from_tid,
                  ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h:130:15: note: candidate is: ‘msg_tag_t tcb_t::do_ipc(threadid_t, threadid_t)’
     msg_tag_t do_ipc(threadid_t to_tid, threadid_t from_tid);
               ^~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:60:7: note: ‘class tcb_t’ defined here
 class tcb_t
       ^~~~~
In file included from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/api/v4/tcb.h: In member function ‘bool tcb_t::is_local_cpu()’:
/root/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
/root/Orion/kernel/src/api/v4/tcb.h:739:13: note: suggested alternative: ‘get_current_tcb’
     return (get_current_cpu() == get_cpu());
             ^~~~~~~~~~~~~~~
             get_current_tcb
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:44,
                 from /root/Orion/kernel/src/api/v4/space.h:37,
                 from /root/Orion/kernel/src/api/v4/tcb.h:42,
                 from /root/Orion/kernel/src/api/v4/schedule.h:37,
                 from /root/Orion/kernel/src/generic/tracebuffer.cc:87:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h: At global scope:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h:197:22: warning: inline function ‘pgent_t* pgent_t::next(space_t*, pgent_t::pgsize_e, word_t)’ used but never defined
     inline pgent_t * next( space_t * s, pgsize_e pgsize, word_t num );
                      ^~~~
make[1]: *** [/root/Orion/kernel/Mk/Makeconf:208: src/generic/tracebuffer.o] Error 1
make[1]: Leaving directory '/root/Orion/kernel/p3'
make: *** [Makefile:38: all] Error 2
[root@fedora28 p3]# 
vmlemon commented 5 years ago

Status is now the following, after re-importing the types.h, from upstream Pistachio:

[root@fedora28 Orion]# cat kernel/p3/B9e 
/root/Orion/kernel/src/api/v4/syscalls.h:90:40: error: macro "SYS_EXCHANGE_REGISTERS" requires 8 arguments, but only 7 given
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:313:5: error: ‘x’ was not declared in this scope
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:324:5: error: ‘x’ was not declared in this scope
/root/Orion/kernel/src/api/v4/tcb.h:425:31: error: ‘class space_t’ has no member named ‘get_tcb’; did you mean ‘add_tcb’?
/root/Orion/kernel/src/api/v4/tcb.h:570:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
/root/Orion/kernel/src/api/v4/tcb.h:578:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
/root/Orion/kernel/src/api/v4/tcb.h:586:14: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
/root/Orion/kernel/src/api/v4/tcb.h:594:24: error: ‘class utcb_t’ has no member named ‘notify_bits’; did you mean ‘notify_mask’?
/root/Orion/kernel/src/api/v4/syscalls.h:88:1: error: ‘SYS_EXCHANGE_REGISTERS’ does not name a type
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:112:13: error: no declaration matches ‘void tcb_t::allocate()’
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:569:13: error: no declaration matches ‘void tcb_t::copy_saved_regs(tcb_t*)’
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:601:13: error: no declaration matches ‘void tcb_t::copy_volatile_regs(tcb_t*)’
/root/Orion/kernel/src/glue/v4-powerpc64/tcb.h:734:18: error: no declaration matches ‘msg_tag_t tcb_t::do_ipc(threadid_t, threadid_t, timeout_t)’
/root/Orion/kernel/src/api/v4/tcb.h:739:13: error: ‘get_current_cpu’ was not declared in this scope