Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | fix broken offset argument to the mmap2 syscall on or1k | Rich Felker | 2014-07-30 | 1 | -0/+2 |
| | | | | | | for or1k, the kernel expects the offset passed to mmap2 in units of the 8k page size, not the standard unit of 4k used on most other archs. | ||||
* | provide PAGE_SIZE as a constant value of 8192 on or1k | Rich Felker | 2014-07-30 | 1 | -0/+1 |
| | | | | | according to Stefan Kristiansson, or1k page size is not actually variable and the value of 8192 is part of the ABI. | ||||
* | remove unused a_cas_l from or1k atomic.h | Rich Felker | 2014-07-27 | 1 | -5/+0 |
| | | | | this follows the same logic as in the previous commit for other archs. | ||||
* | add syscall numbers for the new renameat2 syscall | Szabolcs Nagy | 2014-07-20 | 1 | -0/+6 |
| | | | | | it's like rename but with flags eg. to allow atomic exchange of two files, introduced in linux 3.15 commit 520c8b16505236fc82daa352e6c5e73cd9870cff | ||||
* | fix or1k atomic store | Rich Felker | 2014-07-19 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | at the very least, a compiler barrier is required no matter what, and that was missing. current or1k implementations have strong ordering, but this is not guaranteed as part of the ISA, so some sort of synchronizing operation is necessary. in principle we should use l.msync, but due to misinterpretation of the spec, it was wrongly treated as an optional instruction and is not supported by some implementations. if future kernels trap it and treat it as a nop (rather than illegal instruction) when the hardware/emulator does not support it, we could consider using it. in the absence of l.msync support, the l.lwa/l.swa instructions, which are specified to have a built-in l.msync, need to be used. the easiest way to use them to implement atomic store is to perform an atomic swap and throw away the result. using compare-and-swap would be lighter, and would probably be sufficient for all actual usage cases, but checking this is difficult and error-prone: with store implemented in terms of swap, it's guaranteed that, when another atomic operation is performed at the same time as the store, either the result of the store followed by the other operation, or just the store (clobbering the other operation's result) is seen. if store were implemented in terms of cas, there are cases where this invariant would fail to hold, and we would need detailed rules for the situations in which the store operation is well-defined. | ||||
* | add or1k (OpenRISC 1000) architecture port | Stefan Kristiansson | 2014-07-18 | 32 | -0/+1737 |
With the exception of a fenv implementation, the port is fully featured. The port has been tested in or1ksim, the golden reference functional simulator for OpenRISC 1000. It passes all libc-test tests (except the math tests that requires a fenv implementation). The port assumes an or1k implementation that has support for atomic instructions (l.lwa/l.swa). Although it passes all the libc-test tests, the port is still in an experimental state, and has yet experienced very little 'real-world' use. |