~trn/duma

03a01684e7a894962faac4542666ba31a78be858 — Jeffrey H. Johnson 11 days ago 1ab2c9c
Update README.md: Add MIPS and RISC-V information
1 files changed, 40 insertions(+), 12 deletions(-)

M README.md
M README.md => README.md +40 -12
@@ 37,6 37,7 @@
    - [Solaris](#solaris)
    - [BSD](#bsd)
    - [ARM CPU's](#arm-cpus)
	- [RISC-V CPU's](#riscv-cpus)
- [Usage](#usage)
- [Global and Environment Variables](#global-and-environment-variables)
- [Word-Alignment and Overrun Detection](#word-alignment-and-overrun-detection)


@@ 120,14 121,18 @@ memory-leak, some source modification is necessary - at the minimum, adding

##### GNU Make

**DUMA** may be built using **GNU Make**. **GNU Make** is available on many operating systems,
including _Solaris_, _AIX_, _HP-UX_, _BSD_, _Linux_, and _Microsoft Windows_ (with the _Cygwin_
_UWIN_, or _MSYS_ / _MINGW_ environments.)
**DUMA** may be built using ***GNU*** **Make**.

**GNU Make** is most often installed as `gmake`, but may be installed under a different name, such
as `mingw32-make`, `mingw64-gmake`, or simply `make`.
***GNU*** **Make** is available for many operating systems,
including _SunOS_ / _Solaris_, _GNU/Hurd_, _AIX_, _HP-UX_, _BSD_, _GNU/Linux_, and
_Microsoft Windows_ (using _Cygwin_ or _UWIN_ for POSIX compatibility, or natively with the
_MSYS_ / _MINGW_ environment.)

Some **_non_**-**GNU Make** systems **_may_** work, but are **_untested_** and **not** recommended.
***GNU*** **Make** is often installed as `gmake`, but may be installed under a different name, such
as `mingw32-make`, `mingw64-gmake`, or simply `make` (*especially on* ***GNU*** *systems such as
Linux*).

Some **_non_**-***GNU*** **Make** systems **_may_** work, but are **_untested_** and **not** **recommended**. 

- Inside the unpacked **DUMA** source directory, create and change to a new `build` directory
  - `mkdir build && cd build`


@@ 182,16 187,16 @@ Some **_non_**-**GNU Make** systems **_may_** work, but are **_untested_** and *
##### Visual Studio

- Compile and execute `createconf`
  - Verify the generated `duma_config.h` header
  - Verify the `duma_config.h` header file generated by `createconf`
- Compile `dumalib`
  - Customize your project's `INCLUDE` and `LIBS` variables, as required for your environment.
  - Customize your project's `INCLUDE` and `LIBS` variables, as required for your environment

---

#### Environment Notes

While **DUMA** should work out of the box on most systems, some environments may require
some additional configuration.
**DUMA** should work out of the box on most systems, however, specific environments may require
additional configuration or warrant special consideration.

##### Solaris



@@ 199,7 204,7 @@ some additional configuration.
  - Older _Solaris_ systems, such as _Solaris 10_, using the GNU tools from the _Companion CD_
    should add `/opt/sfw/bin` and `/opt/sfw/lib/bin` to the `PATH`
  - Newer _Solaris_ systems, such as _Solaris 11.next_ or _OpenIndiana_, require similar
    configuration.
    configuration
- The _Solaris Studio_ compiler and toolchain has not been tested.

---


@@ 221,7 226,30 @@ some additional configuration.

##### ARM CPUs

- **_[add ARM notes]_**
- On systems with *ARM* processors, it may be necessary to set the `DUMA_MEMCPY_OVERLAP`
  variable, which allows overlapping of `memcpy()` regions when the destination address is
  less than the source address.

---

##### MIPS CPUs

- On systems with 64-bit *MIPS* processors, it may be necessary to set the `DUMA_ALIGNMENT`
  environment variable to a value of eight (`8`) bytes.

---

##### RISC-V CPUs

- On systems using *RISC-V* processors, the base instruction set uses only fixed-length 32-bit
  instructions that must be aligned on four (`4`) byte (*32-bit*) boundaries. However, the
  standard encoding scheme supports *compressed* and *variable-length* instructions. These
  instructions can be any number of 16-bit *"instruction parcels"* in length, and are always
  aligned on two (`2`) byte (*16-bit*) boundaries.
- The *RISC-V* processor will not fault when accessing an invalid (unaligned) address. Instead, it
  will use the next nearest valid address.
  - For this reason, the `DUMA_ALIGNMENT` environment variable should not be set to a value of
    one (`1`) on systems using *RISC-V* processors.

---