* device/include/pic16/pic16devices.txt,
[fw/sdcc] / device / include / pic16 / pic16devices.txt
index 5e8885a241970cd93907bbbfada79e35165a52a7..45aec7d46521c2eb45bf43e150158f0e79e553f6 100644 (file)
 # split <offset>
 #       Addresses below <offset> refer to bank 0, addresses above <offset>
 #       refer to SFRs in bank 15 for references via the access bank.
-# sfrrange <first> <last>
-#       SFRs occupy addresses <first> to <last> (both included) and must
-#       hence not be used as RAM.
 # configrange <first> <last>
 #       Configuration registers occupy addresses <first> to <last> (both
 #       included).
-# configword <address> <mask> <value>
+# configword <address> <mask> <value> [<and-mask>]
 #       The config word at address <address> only implements the bits
 #       indicated via <mask> (all others will be forced to 0 by the
 #       compiler).
 #       Unless overridden in C code, use the given default <value>.
+#       The optional <and-mask> will be applied to the value just before
+#       emitting it into the .asm file (used to disable XINST by default).
 # idlocrange <first> <last>
 #       ID locations occupy addresses <first> to <last> (both included).
 # idword <address> <value>
@@ -41,7 +40,6 @@
 name        18f1220
 ramsize     256
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0xff
 configword  0x300002 0x0f 0xff
@@ -64,7 +62,6 @@ using       18f1220
 name        18f2220
 ramsize     512
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0xff
 configword  0x300002 0x0f 0xff
@@ -83,13 +80,12 @@ idlocrange  0x200000 0x200007
 name        18f2221
 ramsize     512
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x37
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x87 0xfb
-configword  0x300006 0xf5 0x8f
+configword  0x300006 0xf5 0x8f 0xbf
 configword  0x300008 0x03 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x03 0xff
@@ -110,7 +106,6 @@ using       18f2221
 name        18f2331
 ramsize     768
 split       0x60
-sfrrange    0xf60 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0xff
 configword  0x300002 0x0f 0xff
@@ -127,10 +122,27 @@ configword  0x30000d 0x40 0xff
 idlocrange  0x200000 0x200007
 
 
+name        18f2410
+ramsize     768
+split       0x80
+configrange 0x300001 0x30000d
+configword  0x300001 0xcf 0x37
+configword  0x300002 0x1f 0xff
+configword  0x300003 0x1f 0xfb
+configword  0x300005 0x87 0xfb
+configword  0x300006 0xc5 0xbf 0xbf
+configword  0x300008 0x0f 0xff
+configword  0x300009 0x40 0xff
+configword  0x30000a 0x0f 0xff
+configword  0x30000b 0x60 0xff
+configword  0x30000c 0x0f 0xff
+configword  0x30000d 0x40 0xff
+idlocrange  0x200000 0x200007
+
+
 name        18f242
 ramsize     768
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0x27 0xff
 configword  0x300002 0x0f 0xff
@@ -149,13 +161,12 @@ idlocrange  0x200000 0x200007
 name        18f2420
 ramsize     768
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x07
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x87 0xfb
-configword  0x300006 0xc5 0xbf
+configword  0x300006 0xc5 0xbf 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -168,13 +179,12 @@ idlocrange  0x200000 0x200007
 name        18f2423
 ramsize     768
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x07
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x87 0xfb
-configword  0x300006 0xc5 0xbf
+configword  0x300006 0xc5 0xbf 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -188,17 +198,35 @@ name        18f2431
 using       18f2331
 
 
+name        18f2450
+# 0x200..0x3FF is not implemented, but we leave that to the linker ;-)
+ramsize     0x500
+split       0x60
+configrange 0x300000 0x30000d
+configword  0x300000 0x3f 0xc7
+configword  0x300001 0xcf 0x37
+configword  0x300002 0x3f 0xdf
+configword  0x300003 0x1f 0xff
+configword  0x300005 0x86 0xfb
+configword  0x300006 0xed 0x97 0xbf
+configword  0x300008 0x03 0xff
+configword  0x300009 0x40 0xff
+configword  0x30000a 0x03 0xff
+configword  0x30000b 0x60 0xff
+configword  0x30000c 0x03 0xff
+configword  0x30000d 0x40 0xff
+idlocrange  0x200000 0x200007
+
 name        18f2455
 ramsize     2048
 split       0x60
-sfrrange    0xf60 0xfff
 configrange 0x300000 0x30000d
 configword  0x300000 0x3f 0xc0
 configword  0x300001 0xcf 0x35
 configword  0x300002 0x3f 0xdf
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x87 0xfb
-configword  0x300006 0xe5 0x9f
+configword  0x300006 0xe5 0x9f 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -211,7 +239,6 @@ idlocrange  0x200000 0x200007
 name        18f248
 ramsize     768
 split       0x60
-sfrrange    0xf00 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0x27 0xff
 configword  0x300002 0x0f 0xff
@@ -229,13 +256,12 @@ idlocrange  0x200000 0x200007
 name        18f2480
 ramsize     768
 split       0x60
-sfrrange    0xd00 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x37
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x86 0xfb
-configword  0x300006 0xd5 0xaf
+configword  0x300006 0xd5 0xaf 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -248,7 +274,6 @@ idlocrange  0x200000 0x200007
 name        18f24j10
 ramsize     1024
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300000 0x300005
 configword  0x300000 0xe1 0xff
 configword  0x300001 0x04 0xf7
@@ -258,6 +283,16 @@ configword  0x300005 0x01 0xff
 idlocrange  0x200000 0x200007
 
 
+name        18f2510
+using       18f2410
+ramsize     1536
+
+
+name        18f2515
+using       18f2410
+ramsize     4096
+
+
 name        18f252
 using       18f242
 ramsize     1536
@@ -276,13 +311,12 @@ ramsize     1536
 name        18f2525
 ramsize     4096
 split       0x80
-sfrrange    0xf80 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x37
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x87 0xfb
-configword  0x300006 0xc5 0xbf
+configword  0x300006 0xc5 0xbf 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -309,13 +343,12 @@ ramsize     1536
 name        18f2585
 ramsize     4096
 split       0x60
-sfrrange    0xd00 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x37
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x86 0xfb
-configword  0x300006 0xf5 0x8f
+configword  0x300006 0xf5 0x8f 0xbf
 configword  0x300008 0x0f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x0f 0xff
@@ -329,6 +362,11 @@ name        18f25j10
 using       18f24j10
 
 
+name        18f2610
+using       18f2410
+ramsize     4096
+
+
 name        18f2620
 using       18f2525
 
@@ -340,13 +378,12 @@ using       18f2585
 name        18f2682
 ramsize     4096
 split       0x60
-sfrrange    0xd00 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0xcf 0x37
 configword  0x300002 0x1f 0xff
 configword  0x300003 0x1f 0xff
 configword  0x300005 0x86 0xfb
-configword  0x300006 0xf5 0x8f
+configword  0x300006 0xf5 0x8f 0xbf
 configword  0x300008 0x3f 0xff
 configword  0x300009 0xc0 0xff
 configword  0x30000a 0x3f 0xff
@@ -380,6 +417,11 @@ name        18f4331
 using       18f2331
 
 
+name        18f4410
+using       18f2410
+ramsize     768
+
+
 name        18f442
 using       18f242
 
@@ -396,6 +438,9 @@ name        18f4431
 using       18f2331
 
 
+name        18f4450
+using       18f2450
+
 name        18f4455
 using       18f2455
 
@@ -412,6 +457,16 @@ name        18f44j10
 using       18f24j10
 
 
+name        18f4510
+using       18f2410
+ramsize     1536
+
+
+name        18f4515
+using       18f2410
+ramsize     4096
+
+
 name        18f452
 using       18f242
 ramsize     1536
@@ -452,6 +507,11 @@ name        18f45j10
 using       18f24j10
 
 
+name        18f4610
+using       18f2410
+ramsize     4096
+
+
 name        18f4620
 using       18f2525
 
@@ -471,7 +531,6 @@ using       18f2682
 name        18f6520
 ramsize     2048
 split       0x60
-sfrrange    0xf60 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0x27 0xff
 configword  0x300002 0x0f 0xff
@@ -491,7 +550,6 @@ idlocrange  0x200000 0x200007
 name        18f6585
 ramsize     3328
 split       0x60
-sfrrange    0xd00 0xfff
 configrange 0x300001 0x30000d
 configword  0x300001 0x2f 0xff
 configword  0x300002 0x0f 0xff
@@ -544,3 +602,62 @@ using       18f6520
 ramsize     3840
 
 
+name        18f66j60
+ramsize     4096
+split       0x60
+configrange 0xfff8 0xfffd
+configword  0xfff8 0xc1 0xff
+configword  0xfff9 0x04 0xf7
+configword  0xfffa 0xc7 0xff
+configword  0xfffb 0x0f 0xff
+configword  0xfffc 0xf8 0xff
+configword  0xfffd 0x07 0xff
+
+
+name        18f66j65
+ramsize     4096
+split       0x60
+configrange 0x17ff8 0x17ffd
+configword  0x17ff8 0xc1 0xff
+configword  0x17ff9 0x04 0xf7
+configword  0x17ffa 0xc7 0xff
+configword  0x17ffb 0x0f 0xff
+configword  0x17ffc 0xf8 0xff
+configword  0x17ffd 0x07 0xff
+
+
+name        18f67j60
+ramsize     4096
+split       0x60
+configrange 0x1fff8 0x1fffd
+configword  0x1fff8 0xc1 0xff
+configword  0x1fff9 0x04 0xf7
+configword  0x1fffa 0xc7 0xff
+configword  0x1fffb 0x0f 0xff
+configword  0x1fffc 0xf8 0xff
+configword  0x1fffd 0x07 0xff
+
+
+name        18f86j60
+using       18f66j60
+
+
+name        18f86j65
+using       18f66j65
+
+
+name        18f87j60
+using       18f67j60
+
+
+name        18f96j60
+using       18f66j60
+
+
+name        18f96j65
+using       18f66j65
+
+
+name        18f97j60
+using       18f67j60
+