Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problem with PPC Assembly #1

Closed
vmlemon opened this issue Aug 25, 2019 · 11 comments
Closed

Problem with PPC Assembly #1

vmlemon opened this issue Aug 25, 2019 · 11 comments
Labels

Comments

@vmlemon
Copy link
Owner

vmlemon commented Aug 25, 2019

1: cmp 0, r10, r11

/WhirlPool/pSeries41/Orion/kernel/src/platform/ofpower4/head.S: Assembler messages:
/WhirlPool/pSeries41/Orion/kernel/src/platform/ofpower4/head.S:68: Error: operand out of range (10 is not between 0 and 1)
/WhirlPool/pSeries41/Orion/kernel/src/platform/ofpower4/head.S:68: Error: missing operand

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

Managed to find https://www.ibm.com/support/knowledgecenter/en/ssw_aix_72/assembler/idalangref_cmp_instr.html, but is GCC using a different order, for registers?

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

According to https://patchwork.ozlabs.org/patch/678943/#1492141 (thanks to zid, in #osdev, on FreeNode, for pointing this out!), the BinUtils folks changed the mnemonic syntax, back in 2016. Should we be using cmpd, or cmpw, though?

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

Needed to do this, for both POWER3/4 (changing to cmpd), but the next issue is the lack of asmsyms.h

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

According to http://www.osfree.org/doku/en:docs:kernel:build, there's some extra steps, to make various header files:

make tcb_layout.h
make asmsyms.h
make kdb_class_helper.h
make kdb_autogenerated_protos.h

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

That seems to bail, but I did find https://lists.gnu.org/archive/html/l4-hurd/2005-01/msg00149.html

@vmlemon
Copy link
Owner Author

vmlemon commented Aug 25, 2019

Applied workarounds, for both P3/4 versions, in 0a4ae8f. This at least gets us out of the rut, involving the Assembly code.

@vmlemon vmlemon added the PowerPC label Sep 4, 2019
@vmlemon
Copy link
Owner Author

vmlemon commented Sep 7, 2019

As part of #9, we imported a huge heap of PowerPC 64-bit code, from the NICTA Pistachio 1.1 distribution, that changes the ABI, and API in places, so we need to go back, and see if the workaround for cmp is still necessary, or if it needs to be reapplied, in places.

@vmlemon
Copy link
Owner Author

vmlemon commented Sep 7, 2019

On our MiniCloud PPCBE instance, we get to this stage, with the latest changes:

[root@fedora28 rpb8]# make clean
make[1]: Entering directory '/root/Orion/kernel/rpb8'
make[1]: Leaving directory '/root/Orion/kernel/rpb8'
[root@fedora28 rpb8]# make
make[1]: Entering directory '/root/Orion/kernel/rpb8'
===> Building dependencies
===> src/glue/v4-powerpc64/asmsyms.cc
cd src/glue/v4-powerpc64/ &&  gcc  -nostdinc -I/root/Orion/kernel/rpb8/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4 -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4 -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/rpb8/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/glue/v4-powerpc64/asmsyms.cc
In file included from /root/Orion/kernel/src/api/v4/tcb.h:39,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/root/Orion/kernel/src/api/v4/types.h: In static member function ‘static time_t time_t::period(u16_t, u16_t)’:
/root/Orion/kernel/src/api/v4/types.h:70:22: warning: conversion from ‘u16_t’ {aka ‘short unsigned int’} to ‘short unsigned int:10’ may change value [-Wconversion]
  ret.time.mantissa = mantissa;
                      ^~~~~~~~
/root/Orion/kernel/src/api/v4/types.h:71:22: warning: conversion from ‘u16_t’ {aka ‘short unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  ret.time.exponent = exponent;
                      ^~~~~~~~
/root/Orion/kernel/src/api/v4/types.h: In static member function ‘static time_t time_t::point(u16_t, u16_t)’:
/root/Orion/kernel/src/api/v4/types.h:79:22: warning: conversion from ‘u16_t’ {aka ‘short unsigned int’} to ‘short unsigned int:10’ may change value [-Wconversion]
  ret.time.mantissa = mantissa;
                      ^~~~~~~~
/root/Orion/kernel/src/api/v4/types.h:80:22: warning: conversion from ‘u16_t’ {aka ‘short unsigned int’} to ‘unsigned char:5’ may change value [-Wconversion]
  ret.time.exponent = exponent;
                      ^~~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:39,
                 from /root/Orion/kernel/src/api/v4/space.h:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/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:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/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:81:40: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:54’ may change value [-Wconversion]
   mem.x.base = (base & (~0UL << size)) >> 10;
                ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
/root/Orion/kernel/src/api/v4/fpage.h:82:16: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
   mem.x.size = size;
                ^~~~
In file included from /root/Orion/kernel/src/api/v4/kernelinterface.h:49,
                 from /root/Orion/kernel/src/api/v4/thread.h:36,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:42,
                 from /root/Orion/kernel/src/api/v4/space.h:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/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:120: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:121: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:123: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:124: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/api/v4/thread.h:36,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:42,
                 from /root/Orion/kernel/src/api/v4/space.h:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/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:173: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:174: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:42,
                 from /root/Orion/kernel/src/api/v4/space.h:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/root/Orion/kernel/src/api/v4/thread.h: In static member function ‘static threadid_t threadid_t::anylocalthread()’:
/root/Orion/kernel/src/api/v4/thread.h:58:32: warning: conversion from ‘long unsigned int’ to ‘unsigned char:6’ may change value [-Wconversion]
  tid.local.zero = tid.local.id = 0;
                   ~~~~~~~~~~~~~^~~
/root/Orion/kernel/src/api/v4/thread.h:59:15: warning: conversion from ‘long unsigned int’ to ‘long unsigned int:58’ may change value [-Wconversion]
  tid.local.id -= 1;
  ~~~~~~~~~~~~~^~~~
/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:74:24: 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:88:23: 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:89:24: 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:144: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:145: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:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/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:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h: At global scope:
/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:179:10: error: extra qualification ‘space_t::’ on member ‘add_mapping’ [-fpermissive]
     void space_t::add_mapping( addr_t vaddr, addr_t paddr,
          ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:334:13: error: no declaration matches ‘void space_t::add_tcb(tcb_t*, cpuid_t)’
 INLINE void space_t::add_tcb(tcb_t * tcb, cpuid_t cpu)
             ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:310:13: note: candidate is: ‘void space_t::add_tcb(tcb_t*)’
 inline void space_t::add_tcb(tcb_t * tcb)
             ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:67:7: note: ‘class space_t’ defined here
 class space_t
       ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:344:13: error: no declaration matches ‘bool space_t::remove_tcb(tcb_t*, cpuid_t)’
 INLINE bool space_t::remove_tcb(tcb_t * tcb, cpuid_t cpu)
             ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:320:13: note: candidate is: ‘bool space_t::remove_tcb(tcb_t*)’
 inline bool space_t::remove_tcb(tcb_t * tcb)
             ^~~~~~~
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:67:7: note: ‘class space_t’ defined here
 class space_t
       ^~~~~~~
In file included from /root/Orion/kernel/src/api/v4/tcb.h:48,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/root/Orion/kernel/src/api/v4/ipc.h: In member function ‘void msg_tag_t::set(word_t, word_t, word_t)’:
/root/Orion/kernel/src/api/v4/ipc.h:89:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->x.typed = typed;
                      ^~~~~
/root/Orion/kernel/src/api/v4/ipc.h:90:24: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘unsigned char:6’ may change value [-Wconversion]
      this->x.untyped = untyped;
                        ^~~~~~~
/root/Orion/kernel/src/api/v4/ipc.h:91:22: warning: conversion from ‘word_t’ {aka ‘long unsigned int’} to ‘long unsigned int:48’ may change value [-Wconversion]
      this->x.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:258: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/glue/v4-powerpc64/asmsyms.cc:34:
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc: At global scope:
/root/Orion/kernel/src/generic/mkasmsym.h:40:55: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_sign_t { char x[32*((value) < 0 ? 1 : 2)]; };  \
                                                       ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:42:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b0_t { char x[32*((__ABSVALUE(value) >> 0) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:44:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b1_t { char x[32*((__ABSVALUE(value) >> 8) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:46:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b2_t { char x[32*((__ABSVALUE(value) >> 16) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:48:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b3_t { char x[32*((__ABSVALUE(value) >> 24) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:50:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b4_t { char x[32*((__ABSVALUE(value) >> 32) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:52:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b5_t { char x[32*((__ABSVALUE(value) >> 40) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:54:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b6_t { char x[32*((__ABSVALUE(value) >> 48) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:56:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b7_t { char x[32*((__ABSVALUE(value) >> 56) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:50:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MR, (((word_t) &UTCB->mr[0]) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:40:55: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_sign_t { char x[32*((value) < 0 ? 1 : 2)]; };  \
                                                       ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:42:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b0_t { char x[32*((__ABSVALUE(value) >> 0) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:44:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b1_t { char x[32*((__ABSVALUE(value) >> 8) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:46:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b2_t { char x[32*((__ABSVALUE(value) >> 16) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:48:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b3_t { char x[32*((__ABSVALUE(value) >> 24) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:50:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b4_t { char x[32*((__ABSVALUE(value) >> 32) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:52:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b5_t { char x[32*((__ABSVALUE(value) >> 40) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:54:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b6_t { char x[32*((__ABSVALUE(value) >> 48) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:56:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b7_t { char x[32*((__ABSVALUE(value) >> 56) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:51:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_EXCEPTION_HANDLER, (((word_t) &UTCB->exception_handler) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:40:55: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_sign_t { char x[32*((value) < 0 ? 1 : 2)]; };  \
                                                       ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:42:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b0_t { char x[32*((__ABSVALUE(value) >> 0) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:44:65: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b1_t { char x[32*((__ABSVALUE(value) >> 8) & 0xff)]; }; \
                                                                 ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:46:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b2_t { char x[32*((__ABSVALUE(value) >> 16) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:48:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b3_t { char x[32*((__ABSVALUE(value) >> 24) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:50:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b4_t { char x[32*((__ABSVALUE(value) >> 32) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:52:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b5_t { char x[32*((__ABSVALUE(value) >> 40) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:54:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b6_t { char x[32*((__ABSVALUE(value) >> 48) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
/root/Orion/kernel/src/generic/mkasmsym.h:56:66: error: array bound is not an integer constant before ‘]’ token
 struct sym ##_b7_t { char x[32*((__ABSVALUE(value) >> 56) & 0xff)]; }; \
                                                                  ^
/root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:52:1: note: in expansion of macro ‘MKASMSYM’
 MKASMSYM( OFS_UTCB_MY_GLOBAL_ID, (((word_t) &UTCB->my_global_id) - ((word_t) UTCB)));
 ^~~~~~~~
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/space.h:44,
                 from /root/Orion/kernel/src/api/v4/space.h:36,
                 from /root/Orion/kernel/src/api/v4/tcb.h:43,
                 from /root/Orion/kernel/src/glue/v4-powerpc64/asmsyms.cc:37:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h:196: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 );
                      ^~~~
===> src/generic/lib.cc
cd src/generic/ &&  gcc  -nostdinc -I/root/Orion/kernel/rpb8/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4 -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4 -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/rpb8/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:55: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/rpb8/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4 -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4 -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/rpb8/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/platform/ofpower4/head.S
cd src/platform/ofpower4/ &&  gcc  -DASSEMBLY -nostdinc -I/root/Orion/kernel/rpb8/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/8/include/ -Upowerpc64 -Upower4 -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4 -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/rpb8/config/config.h -imacros /root/Orion/kernel/src/generic/macros.h -include /root/Orion/kernel/src/generic/config.h     -c /root/Orion/kernel/src/platform/ofpower4/head.S
make[1]: *** No rule to make target 'src/glue/v4-powerpc64/asmsyms.o', needed by '/root/Orion/kernel/rpb8/include/asmsyms.h'.  Stop.
make[1]: Leaving directory '/root/Orion/kernel/rpb8'
make: *** [Makefile:38: all] Error 2
[root@fedora28 rpb8]# 

@vmlemon
Copy link
Owner Author

vmlemon commented Sep 7, 2019

With some evil hacks in the NICTA_Pistachio_Mainline_FCL branch, we now successfully generate these very-essential files:

 create mode 100644 kernel/rpb8/include/asmsyms.h
 create mode 100644 kernel/rpb8/include/tcb_layout.h
 create mode 100644 kernel/rpb8/src/glue/v4-powerpc64/asmsyms.o

The next mission is fixing this...

===> src/platform/ofpower4/xics.cc
cd src/platform/ofpower4/ && gcc34 -nostdinc -I/root/Orion/kernel/rpb8/include -I/root/Orion/kernel/src -I/root/Orion/kernel/src/generic -I/usr/lib/gcc/ppc64-redhat-linux/3.4.6/include/ -Upowerpc64 -Upower4 -Uofpower4 -Uv4 -Urr -D__ARCH__=powerpc64 -D__CPU__=power4 -D__PLATFORM__=ofpower4 -D__API__=v4 -D__SCHED__=rr -imacros /root/Orion/kernel/rpb8/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/platform/ofpower4/xics.cc
In file included from /root/Orion/kernel/src/glue/v4-powerpc64/pgent_inline.h:39,
                 from /root/Orion/kernel/src/arch/powerpc64/pgent.h:38,
                 from /root/Orion/kernel/src/platform/ofpower4/xics.cc:36:
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:178: error: `cpuid_t' has not been declared
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:179: error: ISO C++ forbids declaration of `cpu' with no type
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:189: error: `cpuid_t' has not been declared
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:191: error: ISO C++ forbids declaration of `cpu' with no type
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:211: error: `cpuid_t' has not been declared
/root/Orion/kernel/src/glue/v4-powerpc64/space.h:211: error: ISO C++ forbids declaration of `cpu' with no type
In file included from /root/Orion/kernel/src/arch/powerpc64/pgent.h:38,
                 from /root/Orion/kernel/src/platform/ofpower4/xics.cc:36:
/root/Orion/kernel/src/glue/v4-powerpc64/pgent_inline.h:221: error: prototype for `void pgent_t::set_entry(space_t*, pgent_t::pgsize_e, void*, word_t, word_t, bool)' does not match any in class `pgent_t'
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h:183: error: candidate is: void pgent_t::set_entry(space_t*, pgent_t::pgsize_e, void*, word_t, bool)
/root/Orion/kernel/src/platform/ofpower4/xics.cc: In member function `void intctrl_t::init_arch()':
/root/Orion/kernel/src/platform/ofpower4/xics.cc:144: error: no matching function for call to `pgent_t::set_entry(space_t*, pgent_t::pgsize_e, void*, bool, bool, bool, bool, pgent_t::wimg_e)'
/root/Orion/kernel/src/glue/v4-powerpc64/pgent.h:183: note: candidates are: void pgent_t::set_entry(space_t*, pgent_t::pgsize_e, void*, word_t, bool)
/root/Orion/kernel/src/glue/v4-powerpc64/pgent_inline.h:221: note:                 void pgent_t::set_entry(space_t*, pgent_t::pgsize_e, void*, word_t, word_t, bool)
make[1]: *** [/root/Orion/kernel/Mk/Makeconf:208: src/platform/ofpower4/xics.o] Error 1
make[1]: Leaving directory '/root/Orion/kernel/rpb8'
make: *** [Makefile:38: all] Error 2

@vmlemon
Copy link
Owner Author

vmlemon commented Sep 8, 2019

Looking at https://github.com/vmlemon/Orion/search?p=5&q=cmp&unscoped_q=cmp, we still have some PPC code, that uses cmp, but we haven't gotten as far as building it, yet.

@vmlemon
Copy link
Owner Author

vmlemon commented Sep 8, 2019

Express-patched all of the user/serv/sigma0/crt0-powerpc64.S, user/apps/l4test/powerpc64/crt0.S, user/util/piggybacker/ofppc/crt0.S, user/util/piggybacker/ofppc64/crt0.S, kernel/src/platform/ofg5/head.S, pistachio--devel--1.1--version-0/kernel/src/platform/ofg5/head.S, pistachio--devel--1.1--version-0/kernel/src/platform/ofpower3/head.S, pistachio--devel--1.1--version-0/kernel/src/platform/ofpower4/head.S, kernel/src/platform/ofppc/startup.S, and pistachio--devel--1.1--version-0/kernel/src/platform/ofppc/startup.S versions that we have.

We don't seem to use cmp much (seems to be once, per-file), so there wasn't much to do, but tediously adding a 'd' to every instance, by hand... I'm also unsure if it's necessary to do it for 32-bit PPC (or if it breaks things), but I patched those versions, too.

Going to close this low-hanging bug, now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant