mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-09 21:43:40 +00:00
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.
This commit is contained in:
+2
-2
@@ -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)
|
||||
|
||||
+3
-3
@@ -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:
|
||||
|
||||
+6
-6
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user