Re: Accessing peripheral registers - the next version

2016-08-31 Thread Timo Sintonen via D.gnu
On Wednesday, 31 August 2016 at 10:12:21 UTC, Johannes Pfau wrote: There was @disable this(this) This prevents to use a location as argument to a function, like: print(timer.count). Is there any reason to have this line or not? I guess timer is a (enum) pointer to a struct and count is a Vo

Re: Accessing peripheral registers - the next version

2016-08-31 Thread Timo Sintonen via D.gnu
On Wednesday, 31 August 2016 at 10:12:21 UTC, Johannes Pfau wrote: Am Wed, 31 Aug 2016 09:07:49 + schrieb Timo Sintonen : The original functions had force_inline attribute. The compiler said it can not inline because the body is not available. Is this because they are templates or is th

Re: Accessing peripheral registers - the next version

2016-08-31 Thread Johannes Pfau via D.gnu
Am Wed, 31 Aug 2016 09:07:49 + schrieb Timo Sintonen : > Some thing that I have noticed in the original struct definition > > > struct Volatile(T) { > > T raw; > > nothrow: > > @disable this(this); > > A opAssign(A)(A a) { volatileStore(&raw, a); return a; } > > T loa

Re: Accessing peripheral registers - the next version

2016-08-31 Thread Timo Sintonen via D.gnu
Some thing that I have noticed in the original struct definition struct Volatile(T) { T raw; nothrow: @disable this(this); A opAssign(A)(A a) { volatileStore(&raw, a); return a; } T load() @property { return volatileLoad(&raw); } alias load this; void opOpAssi

Re: Accessing peripheral registers - the next version

2016-08-31 Thread Timo Sintonen via D.gnu
On Sunday, 28 August 2016 at 13:26:37 UTC, Johannes Pfau wrote: Am Sun, 28 Aug 2016 09:28:24 + schrieb Timo Sintonen : I just translated my sample program and everything seems to work in my limited tests. Here is a simplified example of an uart: alias uarttype = uartreg*; enum uarttype u