Files
mercury/runtime/machdeps/README
Julien Fischer d9ff3a3b46 Fix spelling.
runtime/machdeps/README:
    As above.
2015-12-30 02:56:48 +11:00

39 lines
1.7 KiB
Plaintext

This directory contains architecture-dependent code
for using gcc global register variables.
Each header file in this directory should implement the same
interface; this interface is documented in the file `no_regs.h'
(which is the portable version that gets used for unknown
architectures, or if you're not using gcc).
To add a definition for a new architecture, you need to
- Find the config header file in the gcc source code which
defines how registers are used for that machine
(e.g. for mips, the file is .../config/mips/mips.h).
Find the definitions of FIXED_REGISTERS and
CALL_USED_REGISTERS in that header file.
These are arrays of booleans indexed by register
number; somewhere in the same file there should also be
some indication of gcc's register numbering scheme,
so that you can figure out the corresponding register names.
- Choose which registers for Mercury to use as global register
variables. Registers that are fixed or call_used cannot be used.
(That's why you need to look at the FIXED_REGISTERS and
CALL_USED_REGISTERS macros in the gcc source code.)
It's a good idea to leave some registers for use by gcc
(but that may not always be possible, e.g. see the comment
at the start of alpha_regs.h).
Other than that, it's up to you.
- Add a new header file for your architecture in this directory.
This header file should define the same set of macros as the
other header files here. The documentation for what they
should do is in `no_regs.h'.
- Add a new case to the switch on machine type in `../regs.h';
this new case should #include the header file you just added.
- Add the new header file to the MACHHDRS list in runtime/Mmakefile.