Skip to content

Commit

Permalink
m68k: Toward platform agnostic framebuffer debug logging
Browse files Browse the repository at this point in the history
Code subject to #ifdef CONSOLE is made more generic, as was apparently
intended by the original author.

Remove console_put_stats() routine. If it should be somehow useful, it
should also be useful on platforms without framebuffer debug logging. The
present implementation is only built #if defined CONFIG_MAC && defined
CONSOLE even though puts() works everywhere.

Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Tested-by: Stephen N Chivers <schivers@csc.com.au>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
  • Loading branch information
Finn Thain authored and Geert Uytterhoeven committed May 26, 2014
1 parent a19f816 commit 97f3f68
Showing 1 changed file with 26 additions and 86 deletions.
112 changes: 26 additions & 86 deletions arch/m68k/kernel/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@
* ------------
* The console is also able to be turned off. The console in head.S
* is specifically for debugging and can be very useful. It is surrounded by
* #ifdef CONSOLE/#endif clauses so it doesn't have to ship in known-good
* #ifdef / #endif clauses so it doesn't have to ship in known-good
* kernels. It's basic algorithm is to determine the size of the screen
* (in height/width and bit depth) and then use that information for
* displaying an 8x8 font or an 8x16 (widthxheight). I prefer the 8x8 for
Expand Down Expand Up @@ -198,9 +198,8 @@
* CONFIG_xxx: These are the obvious machine configuration defines created
* during configuration. These are defined in autoconf.h.
*
* CONSOLE: There is support for head.S console in this file. This
* console can talk to a Mac frame buffer, but could easily be extrapolated
* to extend it to support other platforms.
* CONSOLE_DEBUG: Only supports a Mac frame buffer but could easily be
* extended to support other platforms.
*
* TEST_MMU: This is a test harness for running on any given machine but
* getting an MMU dump for another class of machine. The classes of machines
Expand Down Expand Up @@ -274,7 +273,7 @@
#include <asm/machw.h>

#ifdef CONFIG_FRAMEBUFFER_CONSOLE
#define CONSOLE
#define CONSOLE_DEBUG
#endif

#ifdef CONFIG_EARLY_PRINTK
Expand Down Expand Up @@ -480,22 +479,21 @@ func_define serial_putc,1
func_define console_putc,1

func_define console_init
func_define console_put_stats
func_define console_put_penguin
func_define console_plot_pixel,3
func_define console_scroll

.macro putc ch
#if defined(CONSOLE) || defined(SERIAL_DEBUG)
#if defined(CONSOLE_DEBUG) || defined(SERIAL_DEBUG)
pea \ch
#endif
#ifdef CONSOLE
#ifdef CONSOLE_DEBUG
func_call console_putc
#endif
#ifdef SERIAL_DEBUG
func_call serial_putc
#endif
#if defined(CONSOLE) || defined(SERIAL_DEBUG)
#if defined(CONSOLE_DEBUG) || defined(SERIAL_DEBUG)
addql #4,%sp
#endif
.endm
Expand All @@ -515,7 +513,7 @@ func_define putn,1
.endm

.macro puts string
#if defined(CONSOLE) || defined(SERIAL_DEBUG)
#if defined(CONSOLE_DEBUG) || defined(SERIAL_DEBUG)
__INITDATA
.Lstr\@:
.string "\string"
Expand Down Expand Up @@ -651,11 +649,9 @@ ENTRY(__start)
lea %pc@(L(mac_rowbytes)),%a1
movel %a0@,%a1@

#ifdef SERIAL_DEBUG
get_bi_record BI_MAC_SCCBASE
lea %pc@(L(mac_sccbase)),%a1
movel %a0@,%a1@
#endif

L(test_notmac):
#endif /* CONFIG_MAC */
Expand Down Expand Up @@ -885,13 +881,12 @@ L(nothp):
*/
#ifdef CONFIG_MAC
is_not_mac(L(nocon))
# ifdef CONSOLE
# ifdef CONSOLE_DEBUG
console_init
# ifdef CONFIG_LOGO
console_put_penguin
# endif /* CONFIG_LOGO */
console_put_stats
# endif /* CONSOLE */
# endif /* CONSOLE_DEBUG */
L(nocon):
#endif /* CONFIG_MAC */

Expand Down Expand Up @@ -1396,15 +1391,13 @@ L(mmu_fixup_done):
andl L(mac_videobase),%d0
addl #VIDEOMEMBASE,%d0
movel %d0,L(mac_videobase)
#if defined(CONSOLE)
#ifdef CONSOLE_DEBUG
movel %pc@(L(phys_kernel_start)),%d0
subl #PAGE_OFFSET,%d0
subl %d0,L(console_font)
subl %d0,L(console_font_data)
#endif
#ifdef SERIAL_DEBUG
orl #0x50000000,L(mac_sccbase)
#endif
1:
#endif

Expand Down Expand Up @@ -2734,7 +2727,11 @@ func_return get_new_page
*/

#ifdef CONFIG_MAC
/* You may define either or both of these. */
#define MAC_USE_SCC_A /* Modem port */
#define MAC_USE_SCC_B /* Printer port */

#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
L(scc_initable_mac):
.byte 4,0x44 /* x16, 1 stopbit, no parity */
.byte 3,0xc0 /* receiver: 8 bpc */
Expand All @@ -2748,6 +2745,7 @@ L(scc_initable_mac):
.byte -1
.even
#endif
#endif /* CONFIG_MAC */

#ifdef CONFIG_ATARI
/* #define USE_PRINTER */
Expand Down Expand Up @@ -2843,6 +2841,7 @@ func_start serial_init,%d0/%d1/%a0/%a1
| movew #61,CUSTOMBASE+C_SERPER-ZTWOBASE
1:
#endif

#ifdef CONFIG_ATARI
is_not_atari(4f)
movel %pc@(L(iobase)),%a1
Expand Down Expand Up @@ -2877,21 +2876,14 @@ func_start serial_init,%d0/%d1/%a0/%a1
jra L(serial_init_done)
4:
#endif

#ifdef CONFIG_MAC
is_not_mac(L(serial_init_not_mac))

#ifdef SERIAL_DEBUG

/* You may define either or both of these. */
#define MAC_USE_SCC_A /* Modem port */
#define MAC_USE_SCC_B /* Printer port */

#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
#define mac_scc_cha_b_ctrl_offset 0x0
#define mac_scc_cha_a_ctrl_offset 0x2
#define mac_scc_cha_b_data_offset 0x4
#define mac_scc_cha_a_data_offset 0x6

#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
movel %pc@(L(mac_sccbase)),%a0
/* Reset SCC register pointer */
moveb %a0@(mac_scc_cha_a_ctrl_offset),%d0
Expand All @@ -2905,7 +2897,6 @@ func_start serial_init,%d0/%d1/%a0/%a1
subq #1,%d0
jne 5b
#endif

#ifdef MAC_USE_SCC_A
/* Initialize channel A */
lea %pc@(L(scc_initable_mac)),%a1
Expand All @@ -2916,7 +2907,6 @@ func_start serial_init,%d0/%d1/%a0/%a1
jra 5b
6:
#endif /* MAC_USE_SCC_A */

#ifdef MAC_USE_SCC_B
/* Initialize channel B */
lea %pc@(L(scc_initable_mac)),%a1
Expand All @@ -2927,9 +2917,6 @@ func_start serial_init,%d0/%d1/%a0/%a1
jra 7b
8:
#endif /* MAC_USE_SCC_B */

#endif /* SERIAL_DEBUG */

jra L(serial_init_done)
L(serial_init_not_mac):
#endif /* CONFIG_MAC */
Expand Down Expand Up @@ -2998,27 +2985,19 @@ func_start serial_putc,%d0/%d1/%a0/%a1

#ifdef CONFIG_MAC
is_not_mac(5f)

#ifdef SERIAL_DEBUG

#if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
movel %pc@(L(mac_sccbase)),%a1
#endif

#ifdef MAC_USE_SCC_A
3: btst #2,%a1@(mac_scc_cha_a_ctrl_offset)
jeq 3b
moveb %d0,%a1@(mac_scc_cha_a_data_offset)
#endif /* MAC_USE_SCC_A */

#ifdef MAC_USE_SCC_B
4: btst #2,%a1@(mac_scc_cha_b_ctrl_offset)
jeq 4b
moveb %d0,%a1@(mac_scc_cha_b_data_offset)
#endif /* MAC_USE_SCC_B */

#endif /* SERIAL_DEBUG */

jra L(serial_putc_done)
5:
#endif /* CONFIG_MAC */
Expand Down Expand Up @@ -3195,7 +3174,7 @@ func_start puts,%d0/%a0
movel ARG1,%a0
jra 2f
1:
#ifdef CONSOLE
#ifdef CONSOLE_DEBUG
console_putc %d0
#endif
#ifdef SERIAL_DEBUG
Expand Down Expand Up @@ -3224,7 +3203,7 @@ func_start putn,%d0-%d2
jls 2f
addb #'A'-('9'+1),%d2
2:
#ifdef CONSOLE
#ifdef CONSOLE_DEBUG
console_putc %d2
#endif
#ifdef SERIAL_DEBUG
Expand Down Expand Up @@ -3256,7 +3235,7 @@ ENTRY(mac_early_print)
movel %sp@(22),%d1 /* fetch parameter */
jra 2f
1:
#ifdef CONSOLE
#ifdef CONSOLE_DEBUG
console_putc %d0
#endif
#ifdef SERIAL_DEBUG
Expand Down Expand Up @@ -3292,7 +3271,7 @@ func_start set_leds,%d0/%a0
func_return set_leds
#endif

#ifdef CONSOLE
#ifdef CONSOLE_DEBUG
/*
* For continuity, see the data alignment
* to which this structure is tied.
Expand Down Expand Up @@ -3396,43 +3375,6 @@ L(console_clear_loop):
1:
func_return console_init

func_start console_put_stats,%a0/%d7
/*
* Some of the register usage that follows
* a0 = pointer to boot_info
* d7 = value of boot_info fields
*/
puts "\nMacLinux\n"

#ifdef SERIAL_DEBUG
puts "\n vidaddr:"
putn %pc@(L(mac_videobase)) /* video addr. */

puts "\n _stext:"
lea %pc@(_stext),%a0
putn %a0

puts "\nbootinfo:"
lea %pc@(_end),%a0
putn %a0

puts "\n cpuid:"
putn %pc@(L(cputype))

# ifdef CONFIG_MAC
puts "\n sccbase:"
putn %pc@(L(mac_sccbase))
# endif
# ifdef MMU_PRINT
putc '\n'
jbsr mmu_print_machine_cpu_types
# endif
#endif /* SERIAL_DEBUG */

putc '\n'

func_return console_put_stats

#ifdef CONFIG_LOGO
func_start console_put_penguin,%a0-%a1/%d0-%d7
/*
Expand Down Expand Up @@ -3774,7 +3716,7 @@ L(white_16):

L(console_plot_pixel_exit):
func_return console_plot_pixel
#endif /* CONSOLE */
#endif /* CONSOLE_DEBUG */


__INITDATA
Expand All @@ -3787,7 +3729,7 @@ L(iobase):
.long 0
#endif

#if defined(CONSOLE)
#ifdef CONSOLE_DEBUG
L(console_globals):
.long 0 /* cursor column */
.long 0 /* cursor row */
Expand All @@ -3798,7 +3740,7 @@ L(console_font):
.long 0 /* pointer to console font (struct font_desc) */
L(console_font_data):
.long 0 /* pointer to console font data */
#endif /* CONSOLE */
#endif /* CONSOLE_DEBUG */

#if defined(MMU_PRINT)
L(mmu_print_data):
Expand Down Expand Up @@ -3856,10 +3798,8 @@ L(mac_dimensions):
.long 0
L(mac_rowbytes):
.long 0
#ifdef SERIAL_DEBUG
L(mac_sccbase):
.long 0
#endif
#endif /* CONFIG_MAC */

#if defined (CONFIG_APOLLO)
Expand Down

0 comments on commit 97f3f68

Please sign in to comment.