Compare commits
5 Commits
release/1.
...
release/1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93867d0c8b | ||
|
|
a1a112d213 | ||
|
|
e679b4da7a | ||
|
|
095f854fa8 | ||
|
|
f9292f1157 |
12
ChangeLog
12
ChangeLog
@@ -1,3 +1,15 @@
|
||||
2013-03-15 Niibe Yutaka <gniibe@fsij.org>
|
||||
|
||||
* Version 1.0.4.
|
||||
* src/usb_desc.c (gnukStringSerial): Updated.
|
||||
|
||||
* regnual/regnual.ld (.bss): Put at RAM1. This makes reGNUal can
|
||||
be loaded on the lower address.
|
||||
|
||||
* regnual/sys.c (entry): Don't change SP. Put alignment.
|
||||
|
||||
* regnual/regnual.c (usb_cb_get_descriptor): Fix adding break.
|
||||
|
||||
2013-03-14 Niibe Yutaka <gniibe@fsij.org>
|
||||
|
||||
* Version 1.0.3.
|
||||
|
||||
9
NEWS
9
NEWS
@@ -1,5 +1,14 @@
|
||||
Gnuk NEWS - User visible changes
|
||||
|
||||
* Major changes in Gnuk 1.0.4
|
||||
|
||||
Released 2013-03-15, by NIIBE Yutaka
|
||||
|
||||
** Relocatable reGNUal, really
|
||||
In 1.0.3, reGNUal was not fully relocatable. It worked loaded on higher
|
||||
address, but didn't work for lower address. This was fixed.
|
||||
|
||||
|
||||
* Major changes in Gnuk 1.0.3
|
||||
|
||||
Released 2013-03-14, by NIIBE Yutaka
|
||||
|
||||
6
README
6
README
@@ -1,7 +1,7 @@
|
||||
Gnuk - An Implementation of USB Cryptographic Token for GnuPG
|
||||
|
||||
Version 1.0.3
|
||||
2013-03-14
|
||||
Version 1.0.4
|
||||
2013-03-15
|
||||
Niibe Yutaka
|
||||
Free Software Initiative of Japan
|
||||
|
||||
@@ -120,7 +120,7 @@ Ac: ST-Link/V2 is cheap one and works, although it's not very good
|
||||
Release notes
|
||||
=============
|
||||
|
||||
This is a third minor release in version 1.0 series of Gnuk.
|
||||
This is a fourth minor release in version 1.0 series of Gnuk.
|
||||
|
||||
While it is daily use for a year and a half, some newly introduced
|
||||
features (including key generation and firmware upgrade) should be
|
||||
|
||||
@@ -275,12 +275,15 @@ usb_cb_get_descriptor (uint8_t desc_type, uint16_t index, uint16_t value)
|
||||
case 0:
|
||||
str = regnual_string_lang_id;
|
||||
size = sizeof (regnual_string_lang_id);
|
||||
break;
|
||||
case 1:
|
||||
str = gnukStringVendor;
|
||||
size = sizeof (gnukStringVendor);
|
||||
break;
|
||||
case 2:
|
||||
str = gnukStringProduct;
|
||||
size = sizeof (gnukStringProduct);
|
||||
break;
|
||||
case 3:
|
||||
str = regnual_string_serial;
|
||||
size = sizeof (regnual_string_serial);
|
||||
|
||||
@@ -23,18 +23,6 @@ SECTIONS
|
||||
{
|
||||
. = 0;
|
||||
|
||||
.bss :
|
||||
{
|
||||
_bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
*(.bss.*)
|
||||
. = ALIGN(4);
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_bss_end = .;
|
||||
} > ram0
|
||||
|
||||
.text : ALIGN(16) SUBALIGN(16)
|
||||
{
|
||||
_text = .;
|
||||
@@ -97,6 +85,18 @@ SECTIONS
|
||||
_edata = .;
|
||||
} > ram1
|
||||
|
||||
.bss :
|
||||
{
|
||||
_bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
*(.bss.*)
|
||||
. = ALIGN(4);
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
_bss_end = .;
|
||||
} > ram1
|
||||
|
||||
PROVIDE(end = .);
|
||||
_end = .;
|
||||
}
|
||||
|
||||
@@ -13,36 +13,33 @@ static void none (void)
|
||||
* Note: the address of this routine 'entry' will be in the vectors as
|
||||
* RESET, but this will be called from application. It's not RESET
|
||||
* state, then.
|
||||
*
|
||||
* This routine doesn't change PSP and MSP. Application should
|
||||
* prepare those stack pointers.
|
||||
*/
|
||||
static __attribute__ ((naked,section(".text.entry")))
|
||||
void entry (void)
|
||||
{
|
||||
asm volatile ("mov r0, pc\n\t"
|
||||
"bic r0, r0, #255\n\t" /* R0 := vector_table address */
|
||||
"mov r1, #0x90\n" /* R1 := numbers of entries * 4 */
|
||||
"bic r0, r0, #255\n\t" /* R0 := vector_table address */
|
||||
"mov r1, #0x90\n\t" /* R1 := numbers of entries * 4 */
|
||||
"ldr r3, .L01\n" /* R3 := -0x20001400 fixed addr */
|
||||
"0:\n\t"
|
||||
"ldr r2, [r0, r1]\n\t"
|
||||
"add r2, r2, #-0x20000000\n\t"
|
||||
"sub r2, r2, #0x1400\n\t"
|
||||
"add r2, r2, r0\n\t" /* Relocate: -0x20001400 + R0 */
|
||||
"add r2, r0\n\t" /* Relocate: R0 - 0x20001400 */
|
||||
"add r2, r3\n\t"
|
||||
"str r2, [r0, r1]\n\t"
|
||||
"subs r1, r1, #4\n\t"
|
||||
"bne 0b\n\t"
|
||||
/* Relocation done. We don't care the first entry. */
|
||||
/* Relocation done. */
|
||||
"ldr r3, .L00\n"
|
||||
".LPIC00:\n\t"
|
||||
"add r3, pc\n\t" /* R3 := @_GLOBAL_OFFSET_TABLE_ */
|
||||
"ldr r4, .L00+4\n\t"
|
||||
"ldr r0, [r3, r4]\n\t"
|
||||
"ldr r4, .L00+8\n\t"
|
||||
"ldr r1, [r3, r4]\n\t"
|
||||
"sub r0, r0, r1\n\t"
|
||||
"mov sp, r0\n\t"
|
||||
/* Clear BSS. */
|
||||
"mov r0, #0\n\t"
|
||||
"ldr r4, .L00+12\n\t"
|
||||
"ldr r4, .L00+4\n\t"
|
||||
"ldr r1, [r3, r4]\n\t"
|
||||
"ldr r4, .L00+16\n\t"
|
||||
"ldr r4, .L00+8\n\t"
|
||||
"ldr r2, [r3, r4]\n"
|
||||
"0:\n\t"
|
||||
"str r0, [r1], #4\n\t"
|
||||
@@ -53,11 +50,12 @@ void entry (void)
|
||||
"mov r1, r0\n\t"
|
||||
"bl main\n"
|
||||
"1:\n\t"
|
||||
"b 1b\n"
|
||||
"b 1b\n\t"
|
||||
".align 2\n"
|
||||
".L01:\n\t"
|
||||
".word -0x20001400\n"
|
||||
".L00:\n\t"
|
||||
".word _GLOBAL_OFFSET_TABLE_-(.LPIC00+4)\n\t"
|
||||
".word __ram_end__(GOT)\n\t"
|
||||
".word __main_stack_size__(GOT)\n\t"
|
||||
".word _bss_start(GOT)\n\t"
|
||||
".word _bss_end(GOT)"
|
||||
: /* no output */ : /* no input */ : "memory");
|
||||
|
||||
@@ -274,7 +274,7 @@ const uint8_t gnukStringSerial[] = {
|
||||
USB_STRING_DESCRIPTOR_TYPE, /* bDescriptorType */
|
||||
/* FSIJ-1.0.3- */
|
||||
'F', 0, 'S', 0, 'I', 0, 'J', 0, '-', 0,
|
||||
'1', 0, '.', 0, '0', 0, '.', 0, '3', 0, /* Version number of Gnuk */
|
||||
'1', 0, '.', 0, '0', 0, '.', 0, '4', 0, /* Version number of Gnuk */
|
||||
'-', 0,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
|
||||
Reference in New Issue
Block a user