Branch: Tag:

2018-11-03

2018-11-03 14:21:37 by Marcus Comstedt <marcus@mc.pp.se>

Merge remote-tracking branch 'origin/8.1' into gobject-introspection

2018-08-05

2018-08-05 13:43:53 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Create millicode at the start of each program for common operations

2018-08-05 13:43:51 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Call functions using a table of function proxies

Since the total size of all the proxies is below 4K (each proxy is a
single JALR instruction, or in worst case an AUIPC + a JALR), and they
are packed together in a special section, any proxy can be addressed
as a 12-bit offset from a base address kept in a register. This means
a single JALR instruction can be used to call any of them even when a
relative call would not reach.

Note that the proxies must be located in the .text segment in order to
be able to reach their destination with a relative jump (on 64-bit).
Thus, generating the proxies on the heap at runtime would not work.

2018-08-05 13:43:49 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Minimal machine code backend

2018-07-13

2018-07-13 20:31:30 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Create millicode at the start of each program for common operations

2018-07-13 17:44:11 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Call functions using a table of function proxies

Since the total size of all the proxies is below 4K (each proxy is a
single JALR instruction, or in worst case an AUIPC + a JALR), and they
are packed together in a special section, any proxy can be addressed
as a 12-bit offset from a base address kept in a register. This means
a single JALR instruction can be used to call any of them even when a
relative call would not reach.

Note that the proxies must be located in the .text segment in order to
be able to reach their destination with a relative jump (on 64-bit).
Thus, generating the proxies on the heap at runtime would not work.

2018-07-12

2018-07-12 21:35:09 by Marcus Comstedt <marcus@mc.pp.se>

RISCV: Minimal machine code backend