all: rename __reg to __volatile

It is less magical now: it only marks loads and stores as volatile. So
the name '__reg' is a bit wrong now.
Этот коммит содержится в:
Ayke van Laethem 2018-09-12 22:05:41 +02:00
родитель 914cd56ca5
коммит 2788ab0172
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED
4 изменённых файлов: 14 добавлений и 14 удалений

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

@ -1559,7 +1559,7 @@ func (c *Compiler) parseInstr(frame *Frame, instr ssa.Instruction) error {
}
store := c.builder.CreateStore(llvmVal, llvmAddr)
valType := instr.Addr.Type().(*types.Pointer).Elem()
if valType, ok := valType.(*types.Named); ok && valType.Obj().Name() == "__reg" {
if valType, ok := valType.(*types.Named); ok && valType.Obj().Name() == "__volatile" {
// Magic type name to make this store volatile, for memory-mapped
// registers.
store.SetVolatile(true)
@ -2982,7 +2982,7 @@ func (c *Compiler) parseUnOp(frame *Frame, unop *ssa.UnOp) (llvm.Value, error) {
case token.MUL: // *x, dereference pointer
valType := unop.X.Type().(*types.Pointer).Elem()
load := c.builder.CreateLoad(x, "")
if valType, ok := valType.(*types.Named); ok && valType.Obj().Name() == "__reg" {
if valType, ok := valType.(*types.Named); ok && valType.Obj().Name() == "__volatile" {
// Magic type name to make this load volatile, for memory-mapped
// registers.
load.SetVolatile(true)

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

@ -143,10 +143,10 @@ package {pkgName}
import "unsafe"
// Magic type name for the compiler.
type __reg uint8
type __volatile uint8
// Export this magic type name.
type RegValue = __reg
type RegValue = __volatile
// Some information about this device.
const (
@ -169,7 +169,7 @@ const (
out.write('\n\t// {description}\n'.format(**peripheral))
for register in peripheral['registers']:
for variant in register['variants']:
out.write('\t{name} = (*__reg)(unsafe.Pointer(uintptr(0x{address:x})))\n'.format(**variant))
out.write('\t{name} = (*__volatile)(unsafe.Pointer(uintptr(0x{address:x})))\n'.format(**variant))
out.write(')\n')
for peripheral in device.peripherals:

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

@ -158,10 +158,10 @@ package {pkgName}
import "unsafe"
// Magic type name for the compiler.
type __reg uint32
type __volatile uint32
// Export this magic type name.
type RegValue = __reg
type RegValue = __volatile
// Some information about this device.
const (
@ -193,14 +193,14 @@ const (
if address < register['address']:
numSkip = (register['address'] - address) // 4
if numSkip == 1:
out.write('\t_padding{padNumber} __reg\n'.format(padNumber=padNumber))
out.write('\t_padding{padNumber} __volatile\n'.format(padNumber=padNumber))
else:
out.write('\t_padding{padNumber} [{num}]__reg\n'.format(padNumber=padNumber, num=numSkip))
out.write('\t_padding{padNumber} [{num}]__volatile\n'.format(padNumber=padNumber, num=numSkip))
padNumber += 1
regType = '__reg'
regType = '__volatile'
if register['array'] is not None:
regType = '[{}]__reg'.format(register['array'])
regType = '[{}]__volatile'.format(register['array'])
out.write('\t{name} {regType}\n'.format(**register, regType=regType))
# next address

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

@ -33,8 +33,8 @@ import (
"unsafe"
)
type __reg uint32
type RegValue = __reg
type __volatile uint32
type RegValue = __volatile
type __asm string
@ -47,7 +47,7 @@ const (
// Nested Vectored Interrupt Controller (NVIC).
type NVIC_Type struct {
ISER [8]__reg
ISER [8]__volatile
}
var NVIC = (*NVIC_Type)(unsafe.Pointer(uintptr(NVIC_BASE)))