/[linux-patches]/genpatches-2.6/historical/2.6.10/1351_sparc32-wli.patch
Gentoo

Contents of /genpatches-2.6/historical/2.6.10/1351_sparc32-wli.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (show annotations) (download) (as text)
Sat Jun 11 23:16:54 2005 UTC (15 years, 1 month ago) by dsd
File MIME type: text/x-diff
File size: 45471 byte(s)
Import historical releases
1 diff -Naur linux-2.6.10-vanilla/arch/sparc/defconfig linux-2.6.10/arch/sparc/defconfig
2 --- linux-2.6.10-vanilla/arch/sparc/defconfig 2004-12-24 13:35:23.000000000 -0800
3 +++ linux-2.6.10/arch/sparc/defconfig 2004-12-25 03:00:03.733775113 -0800
4 @@ -11,12 +11,12 @@
5 #
6 CONFIG_EXPERIMENTAL=y
7 CONFIG_CLEAN_COMPILE=y
8 -CONFIG_STANDALONE=y
9 CONFIG_BROKEN_ON_SMP=y
10
11 #
12 # General setup
13 #
14 +CONFIG_LOCALVERSION=""
15 CONFIG_SWAP=y
16 CONFIG_SYSVIPC=y
17 CONFIG_POSIX_MQUEUE=y
18 @@ -25,17 +25,21 @@
19 # CONFIG_AUDIT is not set
20 CONFIG_LOG_BUF_SHIFT=14
21 # CONFIG_HOTPLUG is not set
22 +CONFIG_KOBJECT_UEVENT=y
23 # CONFIG_IKCONFIG is not set
24 # CONFIG_EMBEDDED is not set
25 CONFIG_KALLSYMS=y
26 # CONFIG_KALLSYMS_ALL is not set
27 +# CONFIG_KALLSYMS_EXTRA_PASS is not set
28 CONFIG_FUTEX=y
29 CONFIG_EPOLL=y
30 -CONFIG_IOSCHED_NOOP=y
31 -CONFIG_IOSCHED_AS=y
32 -CONFIG_IOSCHED_DEADLINE=y
33 -CONFIG_IOSCHED_CFQ=y
34 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
35 +CONFIG_SHMEM=y
36 +CONFIG_CC_ALIGN_FUNCTIONS=0
37 +CONFIG_CC_ALIGN_LABELS=0
38 +CONFIG_CC_ALIGN_LOOPS=0
39 +CONFIG_CC_ALIGN_JUMPS=0
40 +# CONFIG_TINY_SHMEM is not set
41
42 #
43 # Loadable module support
44 @@ -45,15 +49,15 @@
45 # CONFIG_MODULE_FORCE_UNLOAD is not set
46 CONFIG_OBSOLETE_MODPARM=y
47 # CONFIG_MODVERSIONS is not set
48 +# CONFIG_MODULE_SRCVERSION_ALL is not set
49 CONFIG_KMOD=y
50
51 #
52 -# General setup
53 +# General machine setup
54 #
55 CONFIG_VT=y
56 CONFIG_VT_CONSOLE=y
57 CONFIG_HW_CONSOLE=y
58 -# CONFIG_SMP is not set
59 CONFIG_SPARC32=y
60 CONFIG_SBUS=y
61 CONFIG_SBUSCHAR=y
62 @@ -66,10 +70,10 @@
63 CONFIG_PCI=y
64 # CONFIG_PCI_LEGACY_PROC is not set
65 # CONFIG_PCI_NAMES is not set
66 -CONFIG_SUN_OPENPROMFS=m
67 +CONFIG_SUN_OPENPROMFS=y
68 CONFIG_BINFMT_ELF=y
69 CONFIG_BINFMT_AOUT=y
70 -CONFIG_BINFMT_MISC=m
71 +CONFIG_BINFMT_MISC=y
72 CONFIG_SUNOS_EMUL=y
73
74 #
75 @@ -80,6 +84,8 @@
76 #
77 # Generic Driver Options
78 #
79 +CONFIG_STANDALONE=y
80 +CONFIG_PREVENT_FIRMWARE_BUILD=y
81 # CONFIG_DEBUG_DRIVER is not set
82
83 #
84 @@ -90,7 +96,6 @@
85 #
86 # Console display driver support
87 #
88 -# CONFIG_MDA_CONSOLE is not set
89 # CONFIG_PROM_CONSOLE is not set
90 CONFIG_DUMMY_CONSOLE=y
91
92 @@ -102,7 +107,6 @@
93 #
94 # Serial drivers
95 #
96 -# CONFIG_SERIAL_8250 is not set
97
98 #
99 # Non-8250 serial port support
100 @@ -119,15 +123,14 @@
101 #
102 # Misc Linux/SPARC drivers
103 #
104 -CONFIG_SUN_OPENPROMIO=m
105 -CONFIG_SUN_MOSTEK_RTC=m
106 +CONFIG_SUN_OPENPROMIO=y
107 +CONFIG_SUN_MOSTEK_RTC=y
108 # CONFIG_SUN_BPP is not set
109 # CONFIG_SUN_VIDEOPIX is not set
110 -# CONFIG_SUN_AURORA is not set
111 # CONFIG_TADPOLE_TS102_UCTRL is not set
112 # CONFIG_SUN_JSFLASH is not set
113 CONFIG_APM_RTC_IS_GMT=y
114 -CONFIG_RTC=m
115 +CONFIG_RTC=y
116
117 #
118 # Block devices
119 @@ -137,13 +140,22 @@
120 # CONFIG_BLK_CPQ_CISS_DA is not set
121 # CONFIG_BLK_DEV_DAC960 is not set
122 # CONFIG_BLK_DEV_UMEM is not set
123 -CONFIG_BLK_DEV_LOOP=m
124 -CONFIG_BLK_DEV_CRYPTOLOOP=m
125 +CONFIG_BLK_DEV_LOOP=y
126 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set
127 # CONFIG_BLK_DEV_NBD is not set
128 -# CONFIG_BLK_DEV_CARMEL is not set
129 -CONFIG_BLK_DEV_RAM=y
130 -CONFIG_BLK_DEV_RAM_SIZE=4096
131 -CONFIG_BLK_DEV_INITRD=y
132 +# CONFIG_BLK_DEV_SX8 is not set
133 +# CONFIG_BLK_DEV_RAM is not set
134 +CONFIG_BLK_DEV_RAM_COUNT=16
135 +CONFIG_INITRAMFS_SOURCE=""
136 +# CONFIG_CDROM_PKTCDVD is not set
137 +
138 +#
139 +# IO Schedulers
140 +#
141 +CONFIG_IOSCHED_NOOP=y
142 +# CONFIG_IOSCHED_AS is not set
143 +# CONFIG_IOSCHED_DEADLINE is not set
144 +CONFIG_IOSCHED_CFQ=y
145
146 #
147 # ATA/ATAPI/MFM/RLL support
148 @@ -167,9 +179,9 @@
149 CONFIG_BLK_DEV_SD=y
150 # CONFIG_CHR_DEV_ST is not set
151 # CONFIG_CHR_DEV_OSST is not set
152 -CONFIG_BLK_DEV_SR=m
153 +CONFIG_BLK_DEV_SR=y
154 # CONFIG_BLK_DEV_SR_VENDOR is not set
155 -CONFIG_CHR_DEV_SG=m
156 +CONFIG_CHR_DEV_SG=y
157
158 #
159 # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
160 @@ -181,21 +193,22 @@
161 #
162 # SCSI Transport Attributes
163 #
164 -CONFIG_SCSI_SPI_ATTRS=m
165 +CONFIG_SCSI_SPI_ATTRS=y
166 # CONFIG_SCSI_FC_ATTRS is not set
167
168 #
169 # SCSI low-level drivers
170 #
171 # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
172 +# CONFIG_SCSI_3W_9XXX is not set
173 # CONFIG_SCSI_ACARD is not set
174 # CONFIG_SCSI_AACRAID is not set
175 # CONFIG_SCSI_AIC7XXX is not set
176 # CONFIG_SCSI_AIC7XXX_OLD is not set
177 # CONFIG_SCSI_AIC79XX is not set
178 # CONFIG_SCSI_DPT_I2O is not set
179 -# CONFIG_SCSI_ADVANSYS is not set
180 -# CONFIG_SCSI_MEGARAID is not set
181 +# CONFIG_MEGARAID_NEWGEN is not set
182 +# CONFIG_MEGARAID_LEGACY is not set
183 # CONFIG_SCSI_SATA is not set
184 # CONFIG_SCSI_BUSLOGIC is not set
185 # CONFIG_SCSI_DMX3191D is not set
186 @@ -204,13 +217,14 @@
187 # CONFIG_SCSI_FUTURE_DOMAIN is not set
188 # CONFIG_SCSI_GDTH is not set
189 # CONFIG_SCSI_IPS is not set
190 +# CONFIG_SCSI_INITIO is not set
191 # CONFIG_SCSI_INIA100 is not set
192 # CONFIG_SCSI_SYM53C8XX_2 is not set
193 # CONFIG_SCSI_IPR is not set
194 # CONFIG_SCSI_QLOGIC_ISP is not set
195 # CONFIG_SCSI_QLOGIC_FC is not set
196 # CONFIG_SCSI_QLOGIC_1280 is not set
197 -CONFIG_SCSI_QLOGICPTI=m
198 +# CONFIG_SCSI_QLOGICPTI is not set
199 CONFIG_SCSI_QLA2XXX=y
200 # CONFIG_SCSI_QLA21XX is not set
201 # CONFIG_SCSI_QLA22XX is not set
202 @@ -246,7 +260,7 @@
203 # CONFIG_PACKET_MMAP is not set
204 CONFIG_NETLINK_DEV=y
205 CONFIG_UNIX=y
206 -CONFIG_NET_KEY=m
207 +CONFIG_NET_KEY=y
208 CONFIG_INET=y
209 # CONFIG_IP_MULTICAST is not set
210 # CONFIG_IP_ADVANCED_ROUTER is not set
211 @@ -258,28 +272,21 @@
212 # CONFIG_NET_IPGRE is not set
213 # CONFIG_ARPD is not set
214 # CONFIG_SYN_COOKIES is not set
215 -CONFIG_INET_AH=y
216 -CONFIG_INET_ESP=y
217 -CONFIG_INET_IPCOMP=y
218 -CONFIG_IPV6=m
219 -CONFIG_IPV6_PRIVACY=y
220 -CONFIG_INET6_AH=m
221 -CONFIG_INET6_ESP=m
222 -CONFIG_INET6_IPCOMP=m
223 -CONFIG_IPV6_TUNNEL=m
224 +# CONFIG_INET_AH is not set
225 +# CONFIG_INET_ESP is not set
226 +# CONFIG_INET_IPCOMP is not set
227 +# CONFIG_INET_TUNNEL is not set
228 +# CONFIG_IP_TCPDIAG is not set
229 +# CONFIG_IP_TCPDIAG_IPV6 is not set
230 +# CONFIG_IPV6 is not set
231 # CONFIG_NETFILTER is not set
232 CONFIG_XFRM=y
233 -CONFIG_XFRM_USER=m
234 +# CONFIG_XFRM_USER is not set
235
236 #
237 # SCTP Configuration (EXPERIMENTAL)
238 #
239 -CONFIG_IP_SCTP=m
240 -# CONFIG_SCTP_DBG_MSG is not set
241 -CONFIG_SCTP_DBG_OBJCNT=y
242 -# CONFIG_SCTP_HMAC_NONE is not set
243 -# CONFIG_SCTP_HMAC_SHA1 is not set
244 -CONFIG_SCTP_HMAC_MD5=y
245 +# CONFIG_IP_SCTP is not set
246 # CONFIG_ATM is not set
247 # CONFIG_BRIDGE is not set
248 # CONFIG_VLAN_8021Q is not set
249 @@ -292,27 +299,27 @@
250 # CONFIG_NET_DIVERT is not set
251 # CONFIG_ECONET is not set
252 # CONFIG_WAN_ROUTER is not set
253 -# CONFIG_NET_HW_FLOWCONTROL is not set
254
255 #
256 # QoS and/or fair queueing
257 #
258 # CONFIG_NET_SCHED is not set
259 +# CONFIG_NET_CLS_ROUTE is not set
260
261 #
262 # Network testing
263 #
264 -CONFIG_NET_PKTGEN=m
265 +# CONFIG_NET_PKTGEN is not set
266 # CONFIG_NETPOLL is not set
267 # CONFIG_NET_POLL_CONTROLLER is not set
268 # CONFIG_HAMRADIO is not set
269 # CONFIG_IRDA is not set
270 # CONFIG_BT is not set
271 CONFIG_NETDEVICES=y
272 -CONFIG_DUMMY=m
273 +CONFIG_DUMMY=y
274 # CONFIG_BONDING is not set
275 # CONFIG_EQUALIZER is not set
276 -CONFIG_TUN=m
277 +CONFIG_TUN=y
278 # CONFIG_ETHERTAP is not set
279
280 #
281 @@ -324,11 +331,11 @@
282 # Ethernet (10 or 100Mbit)
283 #
284 CONFIG_NET_ETHERNET=y
285 -CONFIG_MII=m
286 +CONFIG_MII=y
287 CONFIG_SUNLANCE=y
288 -CONFIG_HAPPYMEAL=m
289 -CONFIG_SUNBMAC=m
290 -CONFIG_SUNQE=m
291 +CONFIG_HAPPYMEAL=y
292 +CONFIG_SUNBMAC=y
293 +CONFIG_SUNQE=y
294 # CONFIG_SUNGEM is not set
295 # CONFIG_NET_VENDOR_3COM is not set
296
297 @@ -399,34 +406,26 @@
298 CONFIG_INPUT_MOUSEDEV_PSAUX=y
299 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
300 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
301 -CONFIG_INPUT_JOYDEV=m
302 +CONFIG_INPUT_JOYDEV=y
303 # CONFIG_INPUT_TSDEV is not set
304 -CONFIG_INPUT_EVDEV=m
305 -CONFIG_INPUT_EVBUG=m
306 +CONFIG_INPUT_EVDEV=y
307 +CONFIG_INPUT_EVBUG=y
308
309 #
310 # Input I/O drivers
311 #
312 # CONFIG_GAMEPORT is not set
313 CONFIG_SOUND_GAMEPORT=y
314 -CONFIG_SERIO=m
315 +# CONFIG_SERIO is not set
316 # CONFIG_SERIO_I8042 is not set
317 -CONFIG_SERIO_SERPORT=m
318 -# CONFIG_SERIO_CT82C710 is not set
319 -# CONFIG_SERIO_PCIPS2 is not set
320
321 #
322 # Input Device Drivers
323 #
324 -CONFIG_INPUT_KEYBOARD=y
325 -CONFIG_KEYBOARD_ATKBD=m
326 -CONFIG_KEYBOARD_SUNKBD=m
327 -# CONFIG_KEYBOARD_LKKBD is not set
328 -# CONFIG_KEYBOARD_XTKBD is not set
329 -# CONFIG_KEYBOARD_NEWTON is not set
330 +# CONFIG_INPUT_KEYBOARD is not set
331 CONFIG_INPUT_MOUSE=y
332 -CONFIG_MOUSE_PS2=m
333 -CONFIG_MOUSE_SERIAL=m
334 +# CONFIG_MOUSE_PS2 is not set
335 +# CONFIG_MOUSE_SERIAL is not set
336 # CONFIG_MOUSE_VSXXXAA is not set
337 # CONFIG_INPUT_JOYSTICK is not set
338 # CONFIG_INPUT_TOUCHSCREEN is not set
339 @@ -436,31 +435,23 @@
340 # File systems
341 #
342 CONFIG_EXT2_FS=y
343 -CONFIG_EXT2_FS_XATTR=y
344 -CONFIG_EXT2_FS_POSIX_ACL=y
345 -CONFIG_EXT2_FS_SECURITY=y
346 +# CONFIG_EXT2_FS_XATTR is not set
347 # CONFIG_EXT3_FS is not set
348 # CONFIG_JBD is not set
349 -CONFIG_FS_MBCACHE=y
350 # CONFIG_REISERFS_FS is not set
351 # CONFIG_JFS_FS is not set
352 -CONFIG_FS_POSIX_ACL=y
353 -CONFIG_XFS_FS=m
354 -CONFIG_XFS_RT=y
355 -CONFIG_XFS_QUOTA=y
356 -CONFIG_XFS_SECURITY=y
357 -CONFIG_XFS_POSIX_ACL=y
358 +# CONFIG_XFS_FS is not set
359 # CONFIG_MINIX_FS is not set
360 -CONFIG_ROMFS_FS=m
361 +# CONFIG_ROMFS_FS is not set
362 # CONFIG_QUOTA is not set
363 -CONFIG_QUOTACTL=y
364 -CONFIG_AUTOFS_FS=m
365 -CONFIG_AUTOFS4_FS=m
366 +CONFIG_DNOTIFY=y
367 +# CONFIG_AUTOFS_FS is not set
368 +# CONFIG_AUTOFS4_FS is not set
369
370 #
371 # CD-ROM/DVD Filesystems
372 #
373 -CONFIG_ISO9660_FS=m
374 +CONFIG_ISO9660_FS=y
375 # CONFIG_JOLIET is not set
376 # CONFIG_ZISOFS is not set
377 # CONFIG_UDF_FS is not set
378 @@ -468,7 +459,8 @@
379 #
380 # DOS/FAT/NT Filesystems
381 #
382 -# CONFIG_FAT_FS is not set
383 +# CONFIG_MSDOS_FS is not set
384 +# CONFIG_VFAT_FS is not set
385 # CONFIG_NTFS_FS is not set
386
387 #
388 @@ -478,9 +470,9 @@
389 CONFIG_PROC_KCORE=y
390 CONFIG_SYSFS=y
391 # CONFIG_DEVFS_FS is not set
392 -CONFIG_DEVPTS_FS_XATTR=y
393 -# CONFIG_DEVPTS_FS_SECURITY is not set
394 -# CONFIG_TMPFS is not set
395 +# CONFIG_DEVPTS_FS_XATTR is not set
396 +CONFIG_TMPFS=y
397 +# CONFIG_TMPFS_XATTR is not set
398 # CONFIG_HUGETLB_PAGE is not set
399 CONFIG_RAMFS=y
400
401 @@ -491,8 +483,7 @@
402 # CONFIG_AFFS_FS is not set
403 # CONFIG_HFS_FS is not set
404 # CONFIG_HFSPLUS_FS is not set
405 -CONFIG_BEFS_FS=m
406 -# CONFIG_BEFS_DEBUG is not set
407 +# CONFIG_BEFS_FS is not set
408 # CONFIG_BFS_FS is not set
409 # CONFIG_EFS_FS is not set
410 # CONFIG_CRAMFS is not set
411 @@ -506,23 +497,22 @@
412 # Network File Systems
413 #
414 CONFIG_NFS_FS=y
415 -# CONFIG_NFS_V3 is not set
416 +CONFIG_NFS_V3=y
417 # CONFIG_NFS_V4 is not set
418 -# CONFIG_NFS_DIRECTIO is not set
419 +CONFIG_NFS_DIRECTIO=y
420 # CONFIG_NFSD is not set
421 -CONFIG_ROOT_NFS=y
422 +# CONFIG_ROOT_NFS is not set
423 CONFIG_LOCKD=y
424 +CONFIG_LOCKD_V4=y
425 # CONFIG_EXPORTFS is not set
426 CONFIG_SUNRPC=y
427 -CONFIG_SUNRPC_GSS=m
428 -CONFIG_RPCSEC_GSS_KRB5=m
429 +# CONFIG_RPCSEC_GSS_KRB5 is not set
430 +# CONFIG_RPCSEC_GSS_SPKM3 is not set
431 # CONFIG_SMB_FS is not set
432 -CONFIG_CIFS=m
433 -# CONFIG_CIFS_STATS is not set
434 +# CONFIG_CIFS is not set
435 # CONFIG_NCP_FS is not set
436 # CONFIG_CODA_FS is not set
437 -CONFIG_AFS_FS=m
438 -CONFIG_RXRPC=m
439 +# CONFIG_AFS_FS is not set
440
441 #
442 # Partition Types
443 @@ -559,6 +549,7 @@
444 # CONFIG_NLS_ISO8859_8 is not set
445 # CONFIG_NLS_CODEPAGE_1250 is not set
446 # CONFIG_NLS_CODEPAGE_1251 is not set
447 +# CONFIG_NLS_ASCII is not set
448 # CONFIG_NLS_ISO8859_1 is not set
449 # CONFIG_NLS_ISO8859_2 is not set
450 # CONFIG_NLS_ISO8859_3 is not set
451 @@ -572,7 +563,7 @@
452 # CONFIG_NLS_ISO8859_15 is not set
453 # CONFIG_NLS_KOI8_R is not set
454 # CONFIG_NLS_KOI8_U is not set
455 -# CONFIG_NLS_UTF8 is not set
456 +CONFIG_NLS_UTF8=y
457
458 #
459 # Sound
460 @@ -583,6 +574,12 @@
461 # USB support
462 #
463 # CONFIG_USB is not set
464 +CONFIG_USB_ARCH_HAS_HCD=y
465 +CONFIG_USB_ARCH_HAS_OHCI=y
466 +
467 +#
468 +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
469 +#
470
471 #
472 # USB Gadget Support
473 @@ -598,47 +595,30 @@
474 # Kernel hacking
475 #
476 CONFIG_DEBUG_KERNEL=y
477 -# CONFIG_DEBUG_STACK_USAGE is not set
478 -# CONFIG_DEBUG_SLAB is not set
479 CONFIG_MAGIC_SYSRQ=y
480 +# CONFIG_SCHEDSTATS is not set
481 +# CONFIG_DEBUG_SLAB is not set
482 # CONFIG_DEBUG_SPINLOCK is not set
483 -# CONFIG_DEBUG_HIGHMEM is not set
484 # CONFIG_DEBUG_SPINLOCK_SLEEP is not set
485 +# CONFIG_DEBUG_KOBJECT is not set
486 +# CONFIG_DEBUG_HIGHMEM is not set
487 # CONFIG_DEBUG_BUGVERBOSE is not set
488 +# CONFIG_DEBUG_STACK_USAGE is not set
489
490 #
491 # Security options
492 #
493 +# CONFIG_KEYS is not set
494 # CONFIG_SECURITY is not set
495
496 #
497 # Cryptographic options
498 #
499 -CONFIG_CRYPTO=y
500 -CONFIG_CRYPTO_HMAC=y
501 -CONFIG_CRYPTO_NULL=m
502 -CONFIG_CRYPTO_MD4=y
503 -CONFIG_CRYPTO_MD5=y
504 -CONFIG_CRYPTO_SHA1=y
505 -CONFIG_CRYPTO_SHA256=m
506 -CONFIG_CRYPTO_SHA512=m
507 -CONFIG_CRYPTO_DES=y
508 -CONFIG_CRYPTO_BLOWFISH=m
509 -CONFIG_CRYPTO_TWOFISH=m
510 -CONFIG_CRYPTO_SERPENT=m
511 -CONFIG_CRYPTO_AES=m
512 -CONFIG_CRYPTO_CAST5=m
513 -CONFIG_CRYPTO_CAST6=m
514 -CONFIG_CRYPTO_ARC4=m
515 -CONFIG_CRYPTO_DEFLATE=y
516 -CONFIG_CRYPTO_MICHAEL_MIC=m
517 -CONFIG_CRYPTO_CRC32C=m
518 -# CONFIG_CRYPTO_TEST is not set
519 +# CONFIG_CRYPTO is not set
520
521 #
522 # Library routines
523 #
524 +# CONFIG_CRC_CCITT is not set
525 CONFIG_CRC32=y
526 -CONFIG_LIBCRC32C=m
527 -CONFIG_ZLIB_INFLATE=y
528 -CONFIG_ZLIB_DEFLATE=y
529 +CONFIG_LIBCRC32C=y
530 diff -Naur linux-2.6.10-vanilla/arch/sparc/kernel/pcic.c linux-2.6.10/arch/sparc/kernel/pcic.c
531 --- linux-2.6.10-vanilla/arch/sparc/kernel/pcic.c 2004-12-24 13:34:57.000000000 -0800
532 +++ linux-2.6.10/arch/sparc/kernel/pcic.c 2004-12-25 03:00:03.663786699 -0800
533 @@ -161,7 +161,7 @@
534 static int pcic0_up;
535 static struct linux_pcic pcic0;
536
537 -unsigned int pcic_regs;
538 +void * __iomem pcic_regs;
539 volatile int pcic_speculative;
540 volatile int pcic_trapped;
541
542 @@ -313,8 +313,7 @@
543 pcic0_up = 1;
544
545 pcic->pcic_res_regs.name = "pcic_registers";
546 - pcic->pcic_regs = (unsigned long)
547 - ioremap(regs[0].phys_addr, regs[0].reg_size);
548 + pcic->pcic_regs = ioremap(regs[0].phys_addr, regs[0].reg_size);
549 if (!pcic->pcic_regs) {
550 prom_printf("PCIC: Error, cannot map PCIC registers.\n");
551 prom_halt();
552 @@ -328,7 +327,7 @@
553 }
554
555 pcic->pcic_res_cfg_addr.name = "pcic_cfg_addr";
556 - if ((pcic->pcic_config_space_addr = (unsigned long)
557 + if ((pcic->pcic_config_space_addr =
558 ioremap(regs[2].phys_addr, regs[2].reg_size * 2)) == 0) {
559 prom_printf("PCIC: Error, cannot map"
560 "PCI Configuration Space Address.\n");
561 @@ -340,7 +339,7 @@
562 * must be the same. Thus, we need adjust size of data.
563 */
564 pcic->pcic_res_cfg_data.name = "pcic_cfg_data";
565 - if ((pcic->pcic_config_space_data = (unsigned long)
566 + if ((pcic->pcic_config_space_data =
567 ioremap(regs[3].phys_addr, regs[3].reg_size * 2)) == 0) {
568 prom_printf("PCIC: Error, cannot map"
569 "PCI Configuration Space Data.\n");
570 @@ -976,7 +975,7 @@
571 * We do not use horroble macroses here because we want to
572 * advance pointer by sizeof(size).
573 */
574 -void outsb(unsigned long addr, const void *src, unsigned long count) {
575 +void outsb(void * __iomem addr, const void *src, unsigned long count) {
576 while (count) {
577 count -= 1;
578 writeb(*(const char *)src, addr);
579 @@ -985,7 +984,7 @@
580 }
581 }
582
583 -void outsw(unsigned long addr, const void *src, unsigned long count) {
584 +void outsw(void * __iomem addr, const void *src, unsigned long count) {
585 while (count) {
586 count -= 2;
587 writew(*(const short *)src, addr);
588 @@ -994,7 +993,7 @@
589 }
590 }
591
592 -void outsl(unsigned long addr, const void *src, unsigned long count) {
593 +void outsl(void * __iomem addr, const void *src, unsigned long count) {
594 while (count) {
595 count -= 4;
596 writel(*(const long *)src, addr);
597 @@ -1003,7 +1002,7 @@
598 }
599 }
600
601 -void insb(unsigned long addr, void *dst, unsigned long count) {
602 +void insb(void * __iomem addr, void *dst, unsigned long count) {
603 while (count) {
604 count -= 1;
605 *(unsigned char *)dst = readb(addr);
606 @@ -1012,7 +1011,7 @@
607 }
608 }
609
610 -void insw(unsigned long addr, void *dst, unsigned long count) {
611 +void insw(void * __iomem addr, void *dst, unsigned long count) {
612 while (count) {
613 count -= 2;
614 *(unsigned short *)dst = readw(addr);
615 @@ -1021,7 +1020,7 @@
616 }
617 }
618
619 -void insl(unsigned long addr, void *dst, unsigned long count) {
620 +void insl(void * __iomem addr, void *dst, unsigned long count) {
621 while (count) {
622 count -= 4;
623 /*
624 diff -Naur linux-2.6.10-vanilla/arch/sparc/kernel/signal.c linux-2.6.10/arch/sparc/kernel/signal.c
625 --- linux-2.6.10-vanilla/arch/sparc/kernel/signal.c 2004-12-24 13:35:23.000000000 -0800
626 +++ linux-2.6.10/arch/sparc/kernel/signal.c 2004-12-25 03:00:03.656787857 -0800
627 @@ -1016,6 +1016,7 @@
628
629 sigsegv_and_return:
630 force_sig(SIGSEGV, current);
631 + return -EFAULT;
632 }
633
634 static inline void
635 diff -Naur linux-2.6.10-vanilla/arch/sparc/kernel/sun4d_smp.c linux-2.6.10/arch/sparc/kernel/sun4d_smp.c
636 --- linux-2.6.10-vanilla/arch/sparc/kernel/sun4d_smp.c 2004-12-24 13:33:59.000000000 -0800
637 +++ linux-2.6.10/arch/sparc/kernel/sun4d_smp.c 2004-12-25 03:00:03.506812683 -0800
638 @@ -122,8 +122,7 @@
639
640 /* Fix idle thread fields. */
641 __asm__ __volatile__("ld [%0], %%g6\n\t"
642 - "sta %%g6, [%%g0] %1\n\t"
643 - : : "r" (&current_set[cpuid]), "i" (ASI_M_VIKING_TMP2)
644 + : : "r" (&current_set[cpuid])
645 : "memory" /* paranoid */);
646
647 cpu_leds[cpuid] = 0x9;
648 @@ -460,25 +459,18 @@
649
650 void __init smp4d_blackbox_current(unsigned *addr)
651 {
652 - /* We have a nice Linux current register :) */
653 - int rd = addr[1] & 0x3e000000;
654 + int rd = *addr & 0x3e000000;
655
656 - addr[0] = 0x10800006; /* b .+24 */
657 - addr[1] = 0xc0800820 | rd; /* lda [%g0] ASI_M_VIKING_TMP2, reg */
658 + addr[0] = 0xc0800800 | rd; /* lda [%g0] ASI_M_VIKING_TMP1, reg */
659 + addr[2] = 0x81282002 | rd | (rd >> 11); /* sll reg, 2, reg */
660 + addr[4] = 0x01000000; /* nop */
661 }
662
663 void __init sun4d_init_smp(void)
664 {
665 int i;
666 - extern unsigned int patchme_store_new_current[];
667 extern unsigned int t_nmi[], linux_trap_ipi15_sun4d[], linux_trap_ipi15_sun4m[];
668
669 - /* Store current into Linux current register :) */
670 - __asm__ __volatile__("sta %%g6, [%%g0] %0" : : "i"(ASI_M_VIKING_TMP2));
671 -
672 - /* Patch switch_to */
673 - patchme_store_new_current[0] = (patchme_store_new_current[0] & 0x3e000000) | 0xc0a00820;
674 -
675 /* Patch ipi15 trap table */
676 t_nmi[1] = t_nmi[1] + (linux_trap_ipi15_sun4d - linux_trap_ipi15_sun4m);
677
678 diff -Naur linux-2.6.10-vanilla/arch/sparc/lib/bitext.c linux-2.6.10/arch/sparc/lib/bitext.c
679 --- linux-2.6.10-vanilla/arch/sparc/lib/bitext.c 2004-12-24 13:34:44.000000000 -0800
680 +++ linux-2.6.10/arch/sparc/lib/bitext.c 2004-12-25 03:00:03.444822944 -0800
681 @@ -29,10 +29,17 @@
682 int offset, count; /* siamese twins */
683 int off_new;
684 int align1;
685 - int i;
686 + int i, color;
687
688 - if (align == 0)
689 - align = 1;
690 + if (t->num_colors) {
691 + /* align is overloaded to be the page color */
692 + color = align;
693 + align = t->num_colors;
694 + } else {
695 + color = 0;
696 + if (align == 0)
697 + align = 1;
698 + }
699 align1 = align - 1;
700 if ((align & align1) != 0)
701 BUG();
702 @@ -40,6 +47,7 @@
703 BUG();
704 if (len <= 0 || len > t->size)
705 BUG();
706 + color &= align1;
707
708 spin_lock(&t->lock);
709 if (len < t->last_size)
710 @@ -49,7 +57,7 @@
711 count = 0;
712 for (;;) {
713 off_new = find_next_zero_bit(t->map, t->size, offset);
714 - off_new = (off_new + align1) & ~align1;
715 + off_new = ((off_new + align1) & ~align1) + color;
716 count += off_new - offset;
717 offset = off_new;
718 if (offset >= t->size)
719 @@ -121,6 +129,4 @@
720 spin_lock_init(&t->lock);
721 t->map = map;
722 t->size = size;
723 - t->last_size = 0;
724 - t->first_free = 0;
725 }
726 diff -Naur linux-2.6.10-vanilla/arch/sparc/mm/fault.c linux-2.6.10/arch/sparc/mm/fault.c
727 --- linux-2.6.10-vanilla/arch/sparc/mm/fault.c 2004-12-24 13:35:50.000000000 -0800
728 +++ linux-2.6.10/arch/sparc/mm/fault.c 2004-12-25 03:00:03.695781403 -0800
729 @@ -294,16 +294,17 @@
730 * the fault.
731 */
732 switch (handle_mm_fault(mm, vma, address, write)) {
733 - case 1:
734 - current->min_flt++;
735 - break;
736 - case 2:
737 + case VM_FAULT_SIGBUS:
738 + goto do_sigbus;
739 + case VM_FAULT_OOM:
740 + goto out_of_memory;
741 + case VM_FAULT_MAJOR:
742 current->maj_flt++;
743 break;
744 - case 0:
745 - goto do_sigbus;
746 + case VM_FAULT_MINOR:
747 default:
748 - goto out_of_memory;
749 + current->min_flt++;
750 + break;
751 }
752 up_read(&mm->mmap_sem);
753 return;
754 @@ -535,8 +536,11 @@
755 if(!(vma->vm_flags & (VM_READ | VM_EXEC)))
756 goto bad_area;
757 }
758 - if (!handle_mm_fault(mm, vma, address, write))
759 + switch (handle_mm_fault(mm, vma, address, write)) {
760 + case VM_FAULT_SIGBUS:
761 + case VM_FAULT_OOM:
762 goto do_sigbus;
763 + }
764 up_read(&mm->mmap_sem);
765 return;
766 bad_area:
767 diff -Naur linux-2.6.10-vanilla/arch/sparc/mm/iommu.c linux-2.6.10/arch/sparc/mm/iommu.c
768 --- linux-2.6.10-vanilla/arch/sparc/mm/iommu.c 2004-12-24 13:35:39.000000000 -0800
769 +++ linux-2.6.10/arch/sparc/mm/iommu.c 2004-12-25 03:00:03.469818806 -0800
770 @@ -119,6 +119,13 @@
771 prom_halt();
772 }
773 bit_map_init(&iommu->usemap, bitmap, IOMMU_NPTES);
774 + /* To be coherent on HyperSparc, the page color of DVMA
775 + * and physical addresses must match.
776 + */
777 + if (srmmu_modtype == HyperSparc)
778 + iommu->usemap.num_colors = vac_cache_size >> PAGE_SHIFT;
779 + else
780 + iommu->usemap.num_colors = 1;
781
782 printk("IOMMU: impl %d vers %d table 0x%p[%d B] map [%d b]\n",
783 impl, vers, iommu->page_table,
784 @@ -128,7 +135,9 @@
785 }
786
787 /* This begs to be btfixup-ed by srmmu. */
788 -static void iommu_viking_flush_iotlb(iopte_t *iopte, unsigned int niopte)
789 +/* Flush the iotlb entries to ram. */
790 +/* This could be better if we didn't have to flush whole pages. */
791 +static void iommu_flush_iotlb(iopte_t *iopte, unsigned int niopte)
792 {
793 unsigned long start;
794 unsigned long end;
795 @@ -145,6 +154,11 @@
796 viking_flush_page(start);
797 start += PAGE_SIZE;
798 }
799 + } else {
800 + while(start < end) {
801 + __flush_page_to_ram(start);
802 + start += PAGE_SIZE;
803 + }
804 }
805 }
806
807 @@ -156,7 +170,8 @@
808 unsigned int busa, busa0;
809 int i;
810
811 - ioptex = bit_map_string_get(&iommu->usemap, npages, 1);
812 + /* page color = pfn of page */
813 + ioptex = bit_map_string_get(&iommu->usemap, npages, page_to_pfn(page));
814 if (ioptex < 0)
815 panic("iommu out");
816 busa0 = iommu->start + (ioptex << PAGE_SHIFT);
817 @@ -172,8 +187,7 @@
818 page++;
819 }
820
821 - iommu_viking_flush_iotlb(iopte0, npages);
822 - flush_cache_all(); // hack to fix dma errors with hypersparc
823 + iommu_flush_iotlb(iopte0, npages);
824
825 return busa0;
826 }
827 @@ -328,7 +342,9 @@
828 if ((addr & ~PAGE_MASK) != 0) BUG();
829 if ((len & ~PAGE_MASK) != 0) BUG();
830
831 - ioptex = bit_map_string_get(&iommu->usemap, len >> PAGE_SHIFT, 1);
832 + /* page color = physical address */
833 + ioptex = bit_map_string_get(&iommu->usemap, len >> PAGE_SHIFT,
834 + addr >> PAGE_SHIFT);
835 if (ioptex < 0)
836 panic("iommu out");
837
838 @@ -372,7 +388,7 @@
839 * to handle the latter case as well.
840 */
841 flush_cache_all();
842 - iommu_viking_flush_iotlb(first, len >> PAGE_SHIFT);
843 + iommu_flush_iotlb(first, len >> PAGE_SHIFT);
844 flush_tlb_all();
845 iommu_invalidate(iommu->regs);
846
847 diff -Naur linux-2.6.10-vanilla/arch/sparc/mm/io-unit.c linux-2.6.10/arch/sparc/mm/io-unit.c
848 --- linux-2.6.10-vanilla/arch/sparc/mm/io-unit.c 2004-12-24 13:34:33.000000000 -0800
849 +++ linux-2.6.10/arch/sparc/mm/io-unit.c 2004-12-25 03:00:03.476817648 -0800
850 @@ -196,7 +196,7 @@
851 pte_t *ptep;
852 long i;
853
854 - pgdp = pgd_offset(init_task.mm, addr);
855 + pgdp = pgd_offset(&init_mm, addr);
856 pmdp = pmd_offset(pgdp, addr);
857 ptep = pte_offset_map(pmdp, addr);
858
859 diff -Naur linux-2.6.10-vanilla/arch/sparc/prom/ranges.c linux-2.6.10/arch/sparc/prom/ranges.c
860 --- linux-2.6.10-vanilla/arch/sparc/prom/ranges.c 2004-12-24 13:34:32.000000000 -0800
861 +++ linux-2.6.10/arch/sparc/prom/ranges.c 2004-12-25 03:00:03.531808545 -0800
862 @@ -34,7 +34,7 @@
863 }
864 }
865
866 -static void
867 +void
868 prom_adjust_ranges(struct linux_prom_ranges *ranges1, int nranges1,
869 struct linux_prom_ranges *ranges2, int nranges2)
870 {
871 diff -Naur linux-2.6.10-vanilla/drivers/char/rtc.c linux-2.6.10/drivers/char/rtc.c
872 --- linux-2.6.10-vanilla/drivers/char/rtc.c 2004-12-24 13:35:50.000000000 -0800
873 +++ linux-2.6.10/drivers/char/rtc.c 2004-12-25 03:00:03.000000000 -0800
874 @@ -878,7 +878,7 @@
875 &rtc_fops
876 };
877
878 -#ifdef RTC_IRQ
879 +#if defined(RTC_IRQ) && !defined(__sparc__)
880 static irqreturn_t (*rtc_int_handler_ptr)(int irq, void *dev_id, struct pt_regs *regs);
881 #endif
882
883 diff -Naur linux-2.6.10-vanilla/drivers/sbus/char/rtc.c linux-2.6.10/drivers/sbus/char/rtc.c
884 --- linux-2.6.10-vanilla/drivers/sbus/char/rtc.c 2004-12-24 13:34:29.000000000 -0800
885 +++ linux-2.6.10/drivers/sbus/char/rtc.c 2004-12-25 03:00:03.000000000 -0800
886 @@ -20,6 +20,7 @@
887 #include <linux/poll.h>
888 #include <linux/init.h>
889 #include <linux/smp_lock.h>
890 +#include <asm/io.h>
891 #include <asm/mostek.h>
892 #include <asm/system.h>
893 #include <asm/uaccess.h>
894 @@ -30,7 +31,7 @@
895 /* Retrieve the current date and time from the real time clock. */
896 static void get_rtc_time(struct rtc_time *t)
897 {
898 - unsigned long regs = mstk48t02_regs;
899 + void * __iomem regs = mstk48t02_regs;
900 u8 tmp;
901
902 spin_lock_irq(&mostek_lock);
903 @@ -57,7 +58,7 @@
904 /* Set the current date and time inthe real time clock. */
905 void set_rtc_time(struct rtc_time *t)
906 {
907 - unsigned long regs = mstk48t02_regs;
908 + void * __iomem regs = mstk48t02_regs;
909 u8 tmp;
910
911 spin_lock_irq(&mostek_lock);
912 diff -Naur linux-2.6.10-vanilla/drivers/sbus/sbus.c linux-2.6.10/drivers/sbus/sbus.c
913 --- linux-2.6.10-vanilla/drivers/sbus/sbus.c 2004-12-24 13:35:50.000000000 -0800
914 +++ linux-2.6.10/drivers/sbus/sbus.c 2004-12-25 03:00:03.000000000 -0800
915 @@ -217,6 +217,8 @@
916 * prom_sbus_ranges_init(), with all sun4d stuff cut away.
917 * Ask DaveM what is going on here, how is sun4d supposed to work... XXX
918 */
919 +/* added back sun4d patch from Thomas Bogendoerfer - should be OK (crn) */
920 +
921 static void __init sbus_bus_ranges_init(int parent_node, struct sbus_bus *sbus)
922 {
923 int len;
924 @@ -229,6 +231,18 @@
925 return;
926 }
927 sbus->num_sbus_ranges = len / sizeof(struct linux_prom_ranges);
928 + if (sparc_cpu_model == sun4d) {
929 + struct linux_prom_ranges iounit_ranges[PROMREG_MAX];
930 + int num_iounit_ranges;
931 +
932 + len = prom_getproperty(parent_node, "ranges",
933 + (char *) iounit_ranges,
934 + sizeof (iounit_ranges));
935 + if (len != -1) {
936 + num_iounit_ranges = (len/sizeof(struct linux_prom_ranges));
937 + prom_adjust_ranges (sbus->sbus_ranges, sbus->num_sbus_ranges, iounit_ranges, num_iounit_ranges);
938 + }
939 + }
940 }
941
942 static void __init __apply_ranges_to_regs(struct linux_prom_ranges *ranges,
943 diff -Naur linux-2.6.10-vanilla/drivers/serial/sunsu.c linux-2.6.10/drivers/serial/sunsu.c
944 --- linux-2.6.10-vanilla/drivers/serial/sunsu.c 2004-12-24 13:34:26.000000000 -0800
945 +++ linux-2.6.10/drivers/serial/sunsu.c 2004-12-25 03:00:03.000000000 -0800
946 @@ -1285,7 +1285,9 @@
947
948 static int __init sunsu_kbd_ms_init(struct uart_sunsu_port *up, int channel)
949 {
950 +#ifdef CONFIG_SERIO
951 struct serio *serio;
952 +#endif
953
954 up->port.line = channel;
955 up->port.type = PORT_UNKNOWN;
956 diff -Naur linux-2.6.10-vanilla/drivers/video/cg6.c linux-2.6.10/drivers/video/cg6.c
957 --- linux-2.6.10-vanilla/drivers/video/cg6.c 2004-12-24 13:34:29.000000000 -0800
958 +++ linux-2.6.10/drivers/video/cg6.c 2004-12-25 03:00:03.000000000 -0800
959 @@ -689,6 +689,9 @@
960 all->par.physbase = sdev->reg_addrs[0].phys_addr;
961
962 sbusfb_fill_var(&all->info.var, sdev->prom_node, 8);
963 + all->info.var.red.length = 8;
964 + all->info.var.green.length = 8;
965 + all->info.var.blue.length = 8;
966
967 linebytes = prom_getintdefault(sdev->prom_node, "linebytes",
968 all->info.var.xres);
969 @@ -732,6 +735,7 @@
970 return;
971 }
972
973 + fb_set_cmap(&all->info.cmap, &all->info);
974 cg6_init_fix(&all->info, linebytes);
975
976 if (register_framebuffer(&all->info) < 0) {
977 diff -Naur linux-2.6.10-vanilla/drivers/video/tcx.c.orig linux-2.6.10/drivers/video/tcx.c.orig
978 --- linux-2.6.10-vanilla/drivers/video/tcx.c.orig 1969-12-31 16:00:00.000000000 -0800
979 +++ linux-2.6.10/drivers/video/tcx.c.orig 2004-12-24 13:33:47.000000000 -0800
980 @@ -0,0 +1,504 @@
981 +/* tcx.c: TCX frame buffer driver
982 + *
983 + * Copyright (C) 2003 David S. Miller (davem@redhat.com)
984 + * Copyright (C) 1996,1998 Jakub Jelinek (jj@ultra.linux.cz)
985 + * Copyright (C) 1996 Miguel de Icaza (miguel@nuclecu.unam.mx)
986 + * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be)
987 + *
988 + * Driver layout based loosely on tgafb.c, see that file for credits.
989 + */
990 +
991 +#include <linux/module.h>
992 +#include <linux/kernel.h>
993 +#include <linux/errno.h>
994 +#include <linux/string.h>
995 +#include <linux/slab.h>
996 +#include <linux/delay.h>
997 +#include <linux/init.h>
998 +#include <linux/fb.h>
999 +#include <linux/mm.h>
1000 +
1001 +#include <asm/io.h>
1002 +#include <asm/sbus.h>
1003 +#include <asm/oplib.h>
1004 +#include <asm/fbio.h>
1005 +
1006 +#include "sbuslib.h"
1007 +
1008 +/*
1009 + * Local functions.
1010 + */
1011 +
1012 +static int tcx_setcolreg(unsigned, unsigned, unsigned, unsigned,
1013 + unsigned, struct fb_info *);
1014 +static int tcx_blank(int, struct fb_info *);
1015 +
1016 +static int tcx_mmap(struct fb_info *, struct file *, struct vm_area_struct *);
1017 +static int tcx_ioctl(struct inode *, struct file *, unsigned int,
1018 + unsigned long, struct fb_info *);
1019 +
1020 +/*
1021 + * Frame buffer operations
1022 + */
1023 +
1024 +static struct fb_ops tcx_ops = {
1025 + .owner = THIS_MODULE,
1026 + .fb_setcolreg = tcx_setcolreg,
1027 + .fb_blank = tcx_blank,
1028 + .fb_fillrect = cfb_fillrect,
1029 + .fb_copyarea = cfb_copyarea,
1030 + .fb_imageblit = cfb_imageblit,
1031 + .fb_mmap = tcx_mmap,
1032 + .fb_ioctl = tcx_ioctl,
1033 + .fb_cursor = soft_cursor,
1034 +};
1035 +
1036 +/* THC definitions */
1037 +#define TCX_THC_MISC_REV_SHIFT 16
1038 +#define TCX_THC_MISC_REV_MASK 15
1039 +#define TCX_THC_MISC_VSYNC_DIS (1 << 25)
1040 +#define TCX_THC_MISC_HSYNC_DIS (1 << 24)
1041 +#define TCX_THC_MISC_RESET (1 << 12)
1042 +#define TCX_THC_MISC_VIDEO (1 << 10)
1043 +#define TCX_THC_MISC_SYNC (1 << 9)
1044 +#define TCX_THC_MISC_VSYNC (1 << 8)
1045 +#define TCX_THC_MISC_SYNC_ENAB (1 << 7)
1046 +#define TCX_THC_MISC_CURS_RES (1 << 6)
1047 +#define TCX_THC_MISC_INT_ENAB (1 << 5)
1048 +#define TCX_THC_MISC_INT (1 << 4)
1049 +#define TCX_THC_MISC_INIT 0x9f
1050 +#define TCX_THC_REV_REV_SHIFT 20
1051 +#define TCX_THC_REV_REV_MASK 15
1052 +#define TCX_THC_REV_MINREV_SHIFT 28
1053 +#define TCX_THC_REV_MINREV_MASK 15
1054 +
1055 +/* The contents are unknown */
1056 +struct tcx_tec {
1057 + volatile u32 tec_matrix;
1058 + volatile u32 tec_clip;
1059 + volatile u32 tec_vdc;
1060 +};
1061 +
1062 +struct tcx_thc {
1063 + volatile u32 thc_rev;
1064 + u32 thc_pad0[511];
1065 + volatile u32 thc_hs; /* hsync timing */
1066 + volatile u32 thc_hsdvs;
1067 + volatile u32 thc_hd;
1068 + volatile u32 thc_vs; /* vsync timing */
1069 + volatile u32 thc_vd;
1070 + volatile u32 thc_refresh;
1071 + volatile u32 thc_misc;
1072 + u32 thc_pad1[56];
1073 + volatile u32 thc_cursxy; /* cursor x,y position (16 bits each) */
1074 + volatile u32 thc_cursmask[32]; /* cursor mask bits */
1075 + volatile u32 thc_cursbits[32]; /* what to show where mask enabled */
1076 +};
1077 +
1078 +struct bt_regs {
1079 + volatile u32 addr;
1080 + volatile u32 color_map;
1081 + volatile u32 control;
1082 + volatile u32 cursor;
1083 +};
1084 +
1085 +#define TCX_MMAP_ENTRIES 14
1086 +
1087 +struct tcx_par {
1088 + spinlock_t lock;
1089 + struct bt_regs __iomem *bt;
1090 + struct tcx_thc __iomem *thc;
1091 + struct tcx_tec __iomem *tec;
1092 + volatile u32 __iomem *cplane;
1093 +
1094 + u32 flags;
1095 +#define TCX_FLAG_BLANKED 0x00000001
1096 +
1097 + unsigned long physbase;
1098 + unsigned long fbsize;
1099 +
1100 + struct sbus_mmap_map mmap_map[TCX_MMAP_ENTRIES];
1101 + int lowdepth;
1102 +
1103 + struct sbus_dev *sdev;
1104 + struct list_head list;
1105 +};
1106 +
1107 +/* Reset control plane so that WID is 8-bit plane. */
1108 +static void __tcx_set_control_plane (struct tcx_par *par)
1109 +{
1110 + volatile u32 __iomem *p, *pend;
1111 +
1112 + if (par->lowdepth)
1113 + return;
1114 +
1115 + p = par->cplane;
1116 + if (p == NULL)
1117 + return;
1118 + for (pend = p + par->fbsize; p < pend; p++) {
1119 + u32 tmp = sbus_readl(p);
1120 +
1121 + tmp &= 0xffffff;
1122 + sbus_writel(tmp, p);
1123 + }
1124 +}
1125 +
1126 +static void tcx_reset (struct fb_info *info)
1127 +{
1128 + struct tcx_par *par = (struct tcx_par *) info->par;
1129 + unsigned long flags;
1130 +
1131 + spin_lock_irqsave(&par->lock, flags);
1132 + __tcx_set_control_plane(par);
1133 + spin_unlock_irqrestore(&par->lock, flags);
1134 +}
1135 +
1136 +/**
1137 + * tcx_setcolreg - Optional function. Sets a color register.
1138 + * @regno: boolean, 0 copy local, 1 get_user() function
1139 + * @red: frame buffer colormap structure
1140 + * @green: The green value which can be up to 16 bits wide
1141 + * @blue: The blue value which can be up to 16 bits wide.
1142 + * @transp: If supported the alpha value which can be up to 16 bits wide.
1143 + * @info: frame buffer info structure
1144 + */
1145 +static int tcx_setcolreg(unsigned regno,
1146 + unsigned red, unsigned green, unsigned blue,
1147 + unsigned transp, struct fb_info *info)
1148 +{
1149 + struct tcx_par *par = (struct tcx_par *) info->par;
1150 + struct bt_regs __iomem *bt = par->bt;
1151 + unsigned long flags;
1152 +
1153 + if (regno >= 256)
1154 + return 1;
1155 +
1156 + red >>= 8;
1157 + green >>= 8;
1158 + blue >>= 8;
1159 +
1160 + spin_lock_irqsave(&par->lock, flags);
1161 +
1162 + sbus_writel(regno << 24, &bt->addr);
1163 + sbus_writel(red << 24, &bt->color_map);
1164 + sbus_writel(green << 24, &bt->color_map);
1165 + sbus_writel(blue << 24, &bt->color_map);
1166 +
1167 + spin_unlock_irqrestore(&par->lock, flags);
1168 +
1169 + return 0;
1170 +}
1171 +
1172 +/**
1173 + * tcx_blank - Optional function. Blanks the display.
1174 + * @blank_mode: the blank mode we want.
1175 + * @info: frame buffer structure that represents a single frame buffer
1176 + */
1177 +static int
1178 +tcx_blank(int blank, struct fb_info *info)
1179 +{
1180 + struct tcx_par *par = (struct tcx_par *) info->par;
1181 + struct tcx_thc __iomem *thc = par->thc;
1182 + unsigned long flags;
1183 + u32 val;
1184 +
1185 + spin_lock_irqsave(&par->lock, flags);
1186 +
1187 + val = sbus_readl(&thc->thc_misc);
1188 +
1189 + switch (blank) {
1190 + case FB_BLANK_UNBLANK: /* Unblanking */
1191 + val &= ~(TCX_THC_MISC_VSYNC_DIS |
1192 + TCX_THC_MISC_HSYNC_DIS);
1193 + val |= TCX_THC_MISC_VIDEO;
1194 + par->flags &= ~TCX_FLAG_BLANKED;
1195 + break;
1196 +
1197 + case FB_BLANK_NORMAL: /* Normal blanking */
1198 + val &= ~TCX_THC_MISC_VIDEO;
1199 + par->flags |= TCX_FLAG_BLANKED;
1200 + break;
1201 +
1202 + case FB_BLANK_VSYNC_SUSPEND: /* VESA blank (vsync off) */
1203 + val |= TCX_THC_MISC_VSYNC_DIS;
1204 + break;
1205 + case FB_BLANK_HSYNC_SUSPEND: /* VESA blank (hsync off) */
1206 + val |= TCX_THC_MISC_HSYNC_DIS;
1207 + break;
1208 +
1209 + case FB_BLANK_POWERDOWN: /* Poweroff */
1210 + break;
1211 + };
1212 +
1213 + sbus_writel(val, &thc->thc_misc);
1214 +
1215 + spin_unlock_irqrestore(&par->lock, flags);
1216 +
1217 + return 0;
1218 +}
1219 +
1220 +static struct sbus_mmap_map __tcx_mmap_map[TCX_MMAP_ENTRIES] = {
1221 + {
1222 + .voff = TCX_RAM8BIT,
1223 + .size = SBUS_MMAP_FBSIZE(1)
1224 + },
1225 + {
1226 + .voff = TCX_RAM24BIT,
1227 + .size = SBUS_MMAP_FBSIZE(4)
1228 + },
1229 + {
1230 + .voff = TCX_UNK3,
1231 + .size = SBUS_MMAP_FBSIZE(8)
1232 + },
1233 + {
1234 + .voff = TCX_UNK4,
1235 + .size = SBUS_MMAP_FBSIZE(8)
1236 + },
1237 + {
1238 + .voff = TCX_CONTROLPLANE,
1239 + .size = SBUS_MMAP_FBSIZE(4)
1240 + },
1241 + {
1242 + .voff = TCX_UNK6,
1243 + .size = SBUS_MMAP_FBSIZE(8)
1244 + },
1245 + {
1246 + .voff = TCX_UNK7,
1247 + .size = SBUS_MMAP_FBSIZE(8)
1248 + },
1249 + {
1250 + .voff = TCX_TEC,
1251 + .size = PAGE_SIZE
1252 + },
1253 + {
1254 + .voff = TCX_BTREGS,
1255 + .size = PAGE_SIZE
1256 + },
1257 + {
1258 + .voff = TCX_THC,
1259 + .size = PAGE_SIZE
1260 + },
1261 + {
1262 + .voff = TCX_DHC,
1263 + .size = PAGE_SIZE
1264 + },
1265 + {
1266 + .voff = TCX_ALT,
1267 + .size = PAGE_SIZE
1268 + },
1269 + {
1270 + .voff = TCX_UNK2,
1271 + .size = 0x20000
1272 + },
1273 + { .size = 0 }
1274 +};
1275 +
1276 +static int tcx_mmap(struct fb_info *info, struct file *file, struct vm_area_struct *vma)
1277 +{
1278 + struct tcx_par *par = (struct tcx_par *)info->par;
1279 +
1280 + return sbusfb_mmap_helper(par->mmap_map,
1281 + par->physbase, par->fbsize,
1282 + par->sdev->reg_addrs[0].which_io,
1283 + vma);
1284 +}
1285 +
1286 +static int tcx_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
1287 + unsigned long arg, struct fb_info *info)
1288 +{
1289 + struct tcx_par *par = (struct tcx_par *) info->par;
1290 +
1291 + return sbusfb_ioctl_helper(cmd, arg, info,
1292 + FBTYPE_TCXCOLOR,
1293 + (par->lowdepth ? 8 : 24),
1294 + par->fbsize);
1295 +}
1296 +
1297 +/*
1298 + * Initialisation
1299 + */
1300 +
1301 +static void
1302 +tcx_init_fix(struct fb_info *info, int linebytes)
1303 +{
1304 + struct tcx_par *par = (struct tcx_par *)info->par;
1305 + const char *tcx_name;
1306 +
1307 + if (par->lowdepth)
1308 + tcx_name = "TCX8";
1309 + else
1310 + tcx_name = "TCX24";
1311 +
1312 + strlcpy(info->fix.id, tcx_name, sizeof(info->fix.id));
1313 +
1314 + info->fix.type = FB_TYPE_PACKED_PIXELS;
1315 + info->fix.visual = FB_VISUAL_PSEUDOCOLOR;
1316 +
1317 + info->fix.line_length = linebytes;
1318 +
1319 + info->fix.accel = FB_ACCEL_SUN_TCX;
1320 +}
1321 +
1322 +struct all_info {
1323 + struct fb_info info;
1324 + struct tcx_par par;
1325 + struct list_head list;
1326 +};
1327 +static LIST_HEAD(tcx_list);
1328 +
1329 +static void tcx_init_one(struct sbus_dev *sdev)
1330 +{
1331 + struct all_info *all;
1332 + int linebytes, i;
1333 +
1334 + all = kmalloc(sizeof(*all), GFP_KERNEL);
1335 + if (!all) {
1336 + printk(KERN_ERR "tcx: Cannot allocate memory.\n");
1337 + return;
1338 + }
1339 + memset(all, 0, sizeof(*all));
1340 +
1341 + INIT_LIST_HEAD(&all->list);
1342 +
1343 + spin_lock_init(&all->par.lock);
1344 + all->par.sdev = sdev;
1345 +
1346 + all->par.lowdepth = prom_getbool(sdev->prom_node, "tcx-8-bit");
1347 +
1348 + sbusfb_fill_var(&all->info.var, sdev->prom_node, 8);
1349 +
1350 + linebytes = prom_getintdefault(sdev->prom_node, "linebytes",
1351 + all->info.var.xres);
1352 + all->par.fbsize = PAGE_ALIGN(linebytes * all->info.var.yres);
1353 +
1354 + all->par.tec = sbus_ioremap(&sdev->resource[7], 0,
1355 + sizeof(struct tcx_tec), "tcx tec");
1356 + all->par.thc = sbus_ioremap(&sdev->resource[9], 0,
1357 + sizeof(struct tcx_thc), "tcx thc");
1358 + all->par.bt = sbus_ioremap(&sdev->resource[8], 0,
1359 + sizeof(struct bt_regs), "tcx dac");
1360 + memcpy(&all->par.mmap_map, &__tcx_mmap_map, sizeof(all->par.mmap_map));
1361 + if (!all->par.lowdepth) {
1362 + all->par.cplane = sbus_ioremap(&sdev->resource[4], 0,
1363 + all->par.fbsize * sizeof(u32), "tcx cplane");
1364 + } else {
1365 + all->par.mmap_map[1].size = SBUS_MMAP_EMPTY;
1366 + all->par.mmap_map[4].size = SBUS_MMAP_EMPTY;
1367 + all->par.mmap_map[5].size = SBUS_MMAP_EMPTY;
1368 + all->par.mmap_map[6].size = SBUS_MMAP_EMPTY;
1369 + }
1370 +
1371 + all->par.physbase = 0;
1372 + for (i = 0; i < TCX_MMAP_ENTRIES; i++) {
1373 + int j;
1374 +
1375 + switch (i) {
1376 + case 10:
1377 + j = 12;
1378 + break;
1379 +
1380 + case 11: case 12:
1381 + j = i - 1;
1382 + break;
1383 +
1384 + default:
1385 + j = i;
1386 + break;
1387 + };
1388 + all->par.mmap_map[i].poff = sdev->reg_addrs[j].phys_addr;
1389 + }
1390 +
1391 + all->info.flags = FBINFO_DEFAULT;
1392 + all->info.fbops = &tcx_ops;
1393 +#ifdef CONFIG_SPARC32
1394 + all->info.screen_base = (char __iomem *)
1395 + prom_getintdefault(sdev->prom_node, "address", 0);
1396 +#endif
1397 + if (!all->info.screen_base)
1398 + all->info.screen_base = sbus_ioremap(&sdev->resource[0], 0,
1399 + all->par.fbsize, "tcx ram");
1400 + all->info.par = &all->par;
1401 +
1402 + /* Initialize brooktree DAC. */
1403 + sbus_writel(0x04 << 24, &all->par.bt->addr); /* color planes */
1404 + sbus_writel(0xff << 24, &all->par.bt->control);
1405 + sbus_writel(0x05 << 24, &all->par.bt->addr);
1406 + sbus_writel(0x00 << 24, &all->par.bt->control);
1407 + sbus_writel(0x06 << 24, &all->par.bt->addr); /* overlay plane */
1408 + sbus_writel(0x73 << 24, &all->par.bt->control);
1409 + sbus_writel(0x07 << 24, &all->par.bt->addr);
1410 + sbus_writel(0x00 << 24, &all->par.bt->control);
1411 +
1412 + tcx_reset(&all->info);
1413 +
1414 + tcx_blank(0, &all->info);
1415 +
1416 + if (fb_alloc_cmap(&all->info.cmap, 256, 0)) {
1417 + printk(KERN_ERR "tcx: Could not allocate color map.\n");
1418 + kfree(all);
1419 + return;
1420 + }
1421 +
1422 + tcx_init_fix(&all->info, linebytes);
1423 +
1424 + if (register_framebuffer(&all->info) < 0) {
1425 + printk(KERN_ERR "tcx: Could not register framebuffer.\n");
1426 + fb_dealloc_cmap(&all->info.cmap);
1427 + kfree(all);
1428 + return;
1429 + }
1430 +
1431 + list_add(&all->list, &tcx_list);
1432 +
1433 + printk("tcx: %s at %lx:%lx, %s\n",
1434 + sdev->prom_name,
1435 + (long) sdev->reg_addrs[0].which_io,
1436 + (long) sdev->reg_addrs[0].phys_addr,
1437 + all->par.lowdepth ? "8-bit only" : "24-bit depth");
1438 +}
1439 +
1440 +int __init tcx_init(void)
1441 +{
1442 + struct sbus_bus *sbus;
1443 + struct sbus_dev *sdev;
1444 +
1445 + if (fb_get_options("tcxfb", NULL))
1446 + return -ENODEV;
1447 +
1448 + for_all_sbusdev(sdev, sbus) {
1449 + if (!strcmp(sdev->prom_name, "tcx"))
1450 + tcx_init_one(sdev);
1451 + }
1452 +
1453 + return 0;
1454 +}
1455 +
1456 +void __exit tcx_exit(void)
1457 +{
1458 + struct list_head *pos, *tmp;
1459 +
1460 + list_for_each_safe(pos, tmp, &tcx_list) {
1461 + struct all_info *all = list_entry(pos, typeof(*all), list);
1462 +
1463 + unregister_framebuffer(&all->info);
1464 + fb_dealloc_cmap(&all->info.cmap);
1465 + kfree(all);
1466 + }
1467 +}
1468 +
1469 +int __init
1470 +tcx_setup(char *arg)
1471 +{
1472 + /* No cmdline options yet... */
1473 + return 0;
1474 +}
1475 +
1476 +module_init(tcx_init);
1477 +
1478 +#ifdef MODULE
1479 +module_exit(tcx_exit);
1480 +#endif
1481 +
1482 +MODULE_DESCRIPTION("framebuffer driver for TCX chipsets");
1483 +MODULE_AUTHOR("David S. Miller <davem@redhat.com>");
1484 +MODULE_LICENSE("GPL");
1485 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/asi.h linux-2.6.10/include/asm-sparc/asi.h
1486 --- linux-2.6.10-vanilla/include/asm-sparc/asi.h 2004-12-24 13:34:44.000000000 -0800
1487 +++ linux-2.6.10/include/asm-sparc/asi.h 2004-12-25 03:00:03.000000000 -0800
1488 @@ -104,7 +104,8 @@
1489 #define ASI_M_DCDR 0x39 /* Data Cache Diagnostics Register rw, ss */
1490
1491 #define ASI_M_VIKING_TMP1 0x40 /* Emulation temporary 1 on Viking */
1492 -#define ASI_M_VIKING_TMP2 0x41 /* Emulation temporary 2 on Viking */
1493 +/* only available on SuperSparc I */
1494 +/* #define ASI_M_VIKING_TMP2 0x41 */ /* Emulation temporary 2 on Viking */
1495
1496 #define ASI_M_ACTION 0x4c /* Breakpoint Action Register (GNU/Viking) */
1497
1498 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/bitext.h linux-2.6.10/include/asm-sparc/bitext.h
1499 --- linux-2.6.10-vanilla/include/asm-sparc/bitext.h 2004-12-24 13:35:23.000000000 -0800
1500 +++ linux-2.6.10/include/asm-sparc/bitext.h 2004-12-25 03:00:03.000000000 -0800
1501 @@ -17,6 +17,7 @@
1502 int last_off;
1503 int last_size;
1504 int first_free;
1505 + int num_colors;
1506 };
1507
1508 extern int bit_map_string_get(struct bit_map *t, int len, int align);
1509 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/floppy.h linux-2.6.10/include/asm-sparc/floppy.h
1510 --- linux-2.6.10-vanilla/include/asm-sparc/floppy.h 2004-12-24 13:33:48.000000000 -0800
1511 +++ linux-2.6.10/include/asm-sparc/floppy.h 2004-12-25 03:00:03.000000000 -0800
1512 @@ -264,7 +264,7 @@
1513 }
1514
1515 /* Our low-level entry point in arch/sparc/kernel/entry.S */
1516 -extern void floppy_hardint(int irq, void *unused, struct pt_regs *regs);
1517 +irqreturn_t floppy_hardint(int irq, void *unused, struct pt_regs *regs);
1518
1519 static int sun_fd_request_irq(void)
1520 {
1521 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/io.h linux-2.6.10/include/asm-sparc/io.h
1522 --- linux-2.6.10-vanilla/include/asm-sparc/io.h 2004-12-24 13:33:52.000000000 -0800
1523 +++ linux-2.6.10/include/asm-sparc/io.h 2004-12-25 03:00:03.000000000 -0800
1524 @@ -134,12 +134,12 @@
1525 #define inl_p(__addr) inl(__addr)
1526 #define outl_p(__l, __addr) outl(__l, __addr)
1527
1528 -extern void outsb(unsigned long addr, const void *src, unsigned long cnt);
1529 -extern void outsw(unsigned long addr, const void *src, unsigned long cnt);
1530 -extern void outsl(unsigned long addr, const void *src, unsigned long cnt);
1531 -extern void insb(unsigned long addr, void *dst, unsigned long count);
1532 -extern void insw(unsigned long addr, void *dst, unsigned long count);
1533 -extern void insl(unsigned long addr, void *dst, unsigned long count);
1534 +void outsb(void * __iomem addr, const void *src, unsigned long cnt);
1535 +void outsw(void * __iomem addr, const void *src, unsigned long cnt);
1536 +void outsl(void * __iomem addr, const void *src, unsigned long cnt);
1537 +void insb(void * __iomem addr, void *dst, unsigned long count);
1538 +void insw(void * __iomem addr, void *dst, unsigned long count);
1539 +void insl(void * __iomem addr, void *dst, unsigned long count);
1540
1541 #define IO_SPACE_LIMIT 0xffffffff
1542
1543 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/pcic.h linux-2.6.10/include/asm-sparc/pcic.h
1544 --- linux-2.6.10-vanilla/include/asm-sparc/pcic.h 2004-12-24 13:34:32.000000000 -0800
1545 +++ linux-2.6.10/include/asm-sparc/pcic.h 2004-12-25 03:00:03.000000000 -0800
1546 @@ -16,10 +16,10 @@
1547 #include <asm/pbm.h>
1548
1549 struct linux_pcic {
1550 - unsigned long pcic_regs;
1551 + void * __iomem pcic_regs;
1552 unsigned long pcic_io;
1553 - unsigned long pcic_config_space_addr;
1554 - unsigned long pcic_config_space_data;
1555 + void * __iomem pcic_config_space_addr;
1556 + void * __iomem pcic_config_space_data;
1557 struct resource pcic_res_regs;
1558 struct resource pcic_res_io;
1559 struct resource pcic_res_cfg_addr;
1560 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/sbus.h linux-2.6.10/include/asm-sparc/sbus.h
1561 --- linux-2.6.10-vanilla/include/asm-sparc/sbus.h 2004-12-24 13:34:01.000000000 -0800
1562 +++ linux-2.6.10/include/asm-sparc/sbus.h 2004-12-25 03:00:03.000000000 -0800
1563 @@ -106,6 +106,8 @@
1564 /* These yield IOMMU mappings in consistent mode. */
1565 extern void *sbus_alloc_consistent(struct sbus_dev *, long, u32 *dma_addrp);
1566 extern void sbus_free_consistent(struct sbus_dev *, long, void *, u32);
1567 +void prom_adjust_ranges(struct linux_prom_ranges *, int,
1568 + struct linux_prom_ranges *, int);
1569
1570 #define SBUS_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL
1571 #define SBUS_DMA_TODEVICE DMA_TO_DEVICE
1572 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/string.h linux-2.6.10/include/asm-sparc/string.h
1573 --- linux-2.6.10-vanilla/include/asm-sparc/string.h 2004-12-24 13:33:49.000000000 -0800
1574 +++ linux-2.6.10/include/asm-sparc/string.h 2004-12-25 03:00:03.000000000 -0800
1575 @@ -40,6 +40,9 @@
1576
1577 if(n <= 32) {
1578 __builtin_memcpy(to, from, n);
1579 + } else if (((unsigned int) to & 7) != 0) {
1580 + /* Destination is not aligned on the double-word boundary */
1581 + __memcpy(to, from, n);
1582 } else {
1583 switch(n) {
1584 case PAGE_SIZE:
1585 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/unistd.h linux-2.6.10/include/asm-sparc/unistd.h
1586 --- linux-2.6.10-vanilla/include/asm-sparc/unistd.h 2004-12-24 13:33:51.000000000 -0800
1587 +++ linux-2.6.10/include/asm-sparc/unistd.h 2004-12-25 03:00:03.000000000 -0800
1588 @@ -486,7 +486,6 @@
1589 static __inline__ _syscall3(int,execve,__const__ char *,file,char **,argv,char **,envp)
1590 static __inline__ _syscall3(int,open,__const__ char *,file,int,flag,int,mode)
1591 static __inline__ _syscall1(int,close,int,fd)
1592 -static __inline__ _syscall1(int,_exit,int,exitcode)
1593 static __inline__ _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
1594
1595 #include <linux/linkage.h>
1596 diff -Naur linux-2.6.10-vanilla/include/asm-sparc/winmacro.h linux-2.6.10/include/asm-sparc/winmacro.h
1597 --- linux-2.6.10-vanilla/include/asm-sparc/winmacro.h 2004-12-24 13:34:32.000000000 -0800
1598 +++ linux-2.6.10/include/asm-sparc/winmacro.h 2004-12-25 03:00:03.000000000 -0800
1599 @@ -112,9 +112,12 @@
1600 and %idreg, 0xc, %idreg; \
1601 ld [%idreg + %dest_reg], %dest_reg;
1602
1603 -/* Sliiick. We have a Linux current register :) -jj */
1604 -#define LOAD_CURRENT4D(dest_reg) \
1605 - lda [%g0] ASI_M_VIKING_TMP2, %dest_reg;
1606 +#define LOAD_CURRENT4D(dest_reg, idreg) \
1607 + lda [%g0] ASI_M_VIKING_TMP1, %idreg; \
1608 + sethi %hi(C_LABEL(current_set)), %dest_reg; \
1609 + sll %idreg, 2, %idreg; \
1610 + or %dest_reg, %lo(C_LABEL(current_set)), %dest_reg; \
1611 + ld [%idreg + %dest_reg], %dest_reg;
1612
1613 /* Blackbox - take care with this... - check smp4m and smp4d before changing this. */
1614 #define LOAD_CURRENT(dest_reg, idreg) \

  ViewVC Help
Powered by ViewVC 1.1.20