tools: generate volatile HasBits() method in device wrappers to simplify bit comparison code

Signed-off-by: Ron Evans <ron@hybridgroup.com>
Этот коммит содержится в:
Ron Evans 2019-05-27 15:35:46 +02:00 коммит произвёл Ayke
родитель 2f95a5d452
коммит 90cd3f8ea5
2 изменённых файлов: 40 добавлений и 0 удалений

Просмотреть файл

@ -200,6 +200,16 @@ func (r *Register8) ClearBits(value uint8) {{
volatile.StoreUint8(&r.Reg, volatile.LoadUint8(&r.Reg) &^ value)
}}
// HasBits reads the register and then checks to see if the passed bits are set. It
// is the volatile equivalent of:
//
// (*r.Reg & value) > 0
//
//go:inline
func (r *Register8) HasBits(value uint8) bool {{
return (r.Get() & value) > 0
}}
// Some information about this device.
const (
DEVICE = "{name}"

Просмотреть файл

@ -349,6 +349,16 @@ func (r *Register8) ClearBits(value uint8) {{
volatile.StoreUint8(&r.Reg, volatile.LoadUint8(&r.Reg) &^ value)
}}
// HasBits reads the register and then checks to see if the passed bits are set. It
// is the volatile equivalent of:
//
// (*r.Reg & value) > 0
//
//go:inline
func (r *Register8) HasBits(value uint8) bool {{
return (r.Get() & value) > 0
}}
type Register16 struct {{
Reg uint16
}}
@ -391,6 +401,16 @@ func (r *Register16) ClearBits(value uint16) {{
volatile.StoreUint16(&r.Reg, volatile.LoadUint16(&r.Reg) &^ value)
}}
// HasBits reads the register and then checks to see if the passed bits are set. It
// is the volatile equivalent of:
//
// (*r.Reg & value) > 0
//
//go:inline
func (r *Register16) HasBits(value uint16) bool {{
return (r.Get() & value) > 0
}}
type Register32 struct {{
Reg uint32
}}
@ -433,6 +453,16 @@ func (r *Register32) ClearBits(value uint32) {{
volatile.StoreUint32(&r.Reg, volatile.LoadUint32(&r.Reg) &^ value)
}}
// HasBits reads the register and then checks to see if the passed bits are set. It
// is the volatile equivalent of:
//
// (*r.Reg & value) > 0
//
//go:inline
func (r *Register32) HasBits(value uint32) bool {{
return (r.Get() & value) > 0
}}
// Some information about this device.
const (
DEVICE = "{name}"